海康威视工业相机SDK二次开发_python-2026_5.14
目录
一、相机运行环境需求
推荐配置
最低配置
GenTL管理
加载cti文件
事件监视
一、前期准备工作
1、硬件:
2、软件:
3、网络配置:
找的你的mvs的安装路径
二、前期:笔记本直连相机(调试阶段)
2.1 拓扑图(前期)
2.2 通讯方式与原理
2.4 前期准备工作
三、后期:交换机+上位机通讯(组网阶段)
3.1 拓扑图(后期)
3.2 通讯方式与原理
3.4 后期准备工作
硬件准备
网络配置
软件/协议准备
测试步骤
四、通讯细节(交换机环境下的数据包流向)
一、硬件连接拓扑图(ASCII)
二、网络配置(必须一致)
三、数据流与交互流程(文字步骤版)
步骤 1:笔记本采集图像
步骤 2:YOLOv8 检测
步骤 3:生成检测结果(JSON 格式)
步骤 4:通过 TCP 发送给上位机
步骤 5:上位机接收与处理
四、各环节通讯与数据流向示意图
五、需要做的准备工作
硬件准备
软件准备
六、总结
网口相机管理
以下文字内容来源官网 工业相机客户端MVS
自用做记录写的乱,可以看其他人的
一、实际操作海康相机遇到问题记录
1、图像存放位置及图像、视频格式及存储路径;在设置里面找到录像抓图
2、显示图像太暗,增加曝光时间
找到Feature Tree/Acquisition/Exposure Time适度增加(直接调成中文看属性)
3、调节数字增益,当是2.76的时候是如下图较暗
当是数字增益是9的时候是如下图较亮,适度调节看你的最终图像质量
自己试出来效果可以的如下图参数,在模拟控制里面调试
一、相机运行环境需求
推荐配置
操作系统:Windows 7/10/11(32/64位)
CPU:Intel Pentium IV 3.0 GHz及以上
内存:4 GB及以上
显示分辨率: 640 × 480或更高分辨率
网卡:推荐Intel Pro1000、I210和I350系列千兆网卡
USB:USB3.0接口
最低配置
操作系统:Windows 7/10/11(32/64位)
CPU:Intel Pentium IV 2.0 GHz
内存:1 GB
显示分辨率:640 × 480
网卡:千兆网卡
USB:USB3.0接口
GenTL管理
GenTL标准提供一个统一的接口,不仅可对采集卡进行参数控制,还可使客户端在不依赖于底层传输技术的情况下连接相机,与相机通信,甚至直接获取相机采集的数据。
加载cti文件
设备列表选中GenTL,单击
,手动选择需要的cti文件后单击打开即可枚举该cti文件下的所有采集卡。
加载cti文件后,可通过设备列表GenTL右侧的
手动刷新枚举到的采集卡。
客户端提供的cti文件路径为C:\Program Files (x86)\Common Files\MVS\Runtime, 请根据电脑实际系统类型选择路径下的文件夹。
事件监视
事件监视功能可对网口相机、U3V相机以及采集卡的事件信息进行记录并查看。
网口相机、U3V相机或采集卡为打开状态,且支持事件控制功能。
新版本不同需要的核心文件是:
MvImport 文件夹下的 MvCameraControl_class.py 和 MvCameraControl.dll(以及依赖的库文件)。
MvCameraControl_class.py 就是 Python 调用的包装类,相当于旧版本的 MvCamera.py。
一、前期准备工作
1、硬件:
笔记本(Windows系统,已安装网卡驱动)
海康工业相机MV-CU060-10GC + 电源适配器 + 网线
2、软件:
下载并安装 海康机器视觉软件(MVS),用于修改相机IP、测试预览。
安装Python环境(如Anaconda),并安装 opencv-python, numpy, ultralytics。
将MVS SDK中的Python接口文件(MvImport文件夹)复制到自己的工程目录
(py文件目录,用来采集图像和yolo检测用)
3、网络配置:
用MVS扫描相机 → 将相机IP改为静态IP(如 192.168.1.100)。
将笔记本网卡IP设置为同一网段(如 192.168.1.101)。
关闭Windows防火墙(或放行GigE Vision端口)。
找的你的mvs的安装路径
C:\anzhuang\haikangweishi\MVS\Development\Samples\Python\MvImport
把MvImport整个文件都复制到自己的工程目录下
(py文件目录,用来采集图像和yolo检测用)
二、前期:笔记本直连相机(调试阶段)
2.1 拓扑图(前期)
text
[海康工业相机] [笔记本] │ │ └─── 网线 ─────────┘
2.2 通讯方式与原理
物理层:相机通过网线直接插入笔记本的RJ45网口(若笔记本无网口,可使用USB千兆网卡)。
数据链路层:GigE Vision协议基于标准以太网,数据包通过TCP/IP或UDP传输。相机作为GigE Vision设备,拥有固定的出厂或配置的IP地址。
网络层:相机与笔记本必须处于同一子网(例如相机IP为
192.168.1.100,笔记本IP设置为192.168.1.101)。默认情况下,相机可能为169.254.x.x(LLA),需要通过MVS软件手动修改为静态IP。应用层:Python程序通过海康MvSDK(
MvCameraControl_class.py)向相机发送指令(如MV_CC_StartGrabbing),相机根据协议将图像数据打包为GigE Vision包发送给笔记本,SDK解包后供YOLOv8处理。
2.4 前期准备工作
硬件:
笔记本(Windows系统,已安装网卡驱动)
海康工业相机MV-CU060-10GC + 电源适配器 + 网线
软件:
下载并安装海康机器视觉软件(MVS),用于修改相机IP、测试预览。
安装Python环境(如Anaconda),并安装
opencv-python,numpy,ultralytics。将MVS SDK中的Python接口文件(
MvImport文件夹)复制到的工程目录。
网络配置:
用MVS扫描相机 → 将相机IP改为静态IP(如
192.168.1.100)。将笔记本网卡IP设置为同一网段(如
192.168.1.101)。关闭Windows防火墙(或放行GigE Vision端口)。
三、后期:交换机+上位机通讯(组网阶段)
3.1 拓扑图(后期)
[海康工业相机] [上位机 / 其他硬件] │ │ └───── [ 绿联5口百兆交换机 ] ──────┘ │ [笔记本]
3.2 通讯方式与原理
物理连接:相机、笔记本、上位机都连接到交换机的任意端口。交换机自动转发数据包,实现星型拓扑。
网络层:所有设备配置同一子网(例如
192.168.1.0/24),设备间可直接通过IP地址互相访问。数据流向:
方案:笔记本从相机实时拉取图像,在本地运行YOLOv8检测,将检测结果(如坐标、类别、时间戳等)通过TCP发送给上位机。
交换机的角色:只是物理层/数据链路层的透明转发器,不参与IP配置。所有设备需要在网络层(IP地址)和传输层(端口)上明确通信关系。
3.4 后期准备工作
硬件准备
一台绿联五口百兆以太网交换机(另外准备足够长度的网线)。
上位机(可以是另一台电脑、工控机、PLC或嵌入式板卡,需支持TCP/UDP通信)。
确保相机、笔记本、上位机都插到交换机的不同端口。
网络配置
使用MVS软件将相机IP固定(如
192.168.1.100)。笔记本网卡IP设为
192.168.1.101。上位机IP设为
192.168.1.102。所有子网掩码保持一致(一般为
255.255.255.0),且网关可留空。
软件/协议准备
笔记本端:原有Python程序保持不变,增加一个结果发送模块。推荐方案:
TCP客户端:连接上位机的监听端口,发送JSON
上位机端:
如果使用TCP,需编写一个TCP服务端(如用Python的
socket模块)
建议:测试阶段使用TCP最简单可靠;正式系统可选用MQTT实现解耦和可扩展性。
测试步骤
连接好交换机,所有设备通电。
在笔记本上用
ping 192.168.1.102检查与上位机的连通性。在上位机上运行TCP服务端(可用Netcat或编写简单服务端测试)。
在笔记本上运行您的Python程序,确认相机工作正常,同时将结果发往上位机。
四、通讯细节(交换机环境下的数据包流向)
在交换机环境下,相机和笔记本之间的GigE Vision数据流不经过上位机,只经过交换机转发。
如果希望上位机也能获取到原始图像,有几种方法:
多播:配置相机发送多播数据流,交换机将数据包复制发送到所有订阅了该多播组的设备(包括上位机)。笔记本和上位机同时接收图像。
缺点:百兆交换机多播可能导致拥塞,需要确认交换机支持IGMP Snooping。二次转发:笔记本收到图像后,通过TCP/UDP将图像转发给上位机(会额外增加CPU和网络负载)。
最常用、最稳定的方案是:笔记本采集、检测,只将检测结果(轻量数据)通过交换机发给上位机。这样百兆网络完全够用。
*****************************************************************************************************
一、硬件连接拓扑图(ASCII)
text
[海康工业相机] [笔记本] [上位机] │ │ │ │ (网线) │ (网线) │ (网线) │ │ │ └─────── [5口百兆交换机] ────────────┘
说明:相机、笔记本、上位机各自用网线连接到交换机的任意端口。所有设备通过交换机形成同一个局域网。
二、网络配置(必须一致)
| 设备 | IP地址 | 子网掩码 | 网关 |
|---|---|---|---|
| 相机 | 192.168.1.100 | 255.255.255.0 | 可选 |
| 笔记本 | 192.168.1.101 | 255.255.255.0 | 可选 |
| 上位机 | 192.168.1.102 | 255.255.255.0 | 可选 |
操作步骤:
通过 MVS 软件将相机 IP 改为
192.168.1.100笔记本网卡手动设置为
192.168.1.101上位机网卡手动设置为
192.168.1.102在笔记本上执行
ping 192.168.1.102验证连通性
三、数据流与交互流程(文字步骤版)
步骤 1:笔记本采集图像
笔记本运行 Python 程序,通过
MvCamera接口与相机建立连接调用
MV_CC_StartGrabbing()开始采集循环调用
MV_CC_GetOneFrameTimeout()获取一帧图像(BGR格式)
步骤 2:YOLOv8 检测
将 BGR 图像送入 YOLOv8 模型推理
解析检测结果(类别、置信度、坐标、b+0/b+1 标签等)
步骤 3:生成检测结果(JSON 格式)
将检测信息封装为 JSON 字符串,例如:
json
{ "frame_id": 100, "timestamp": "2026-05-14 15:30:22", "b_label": "b+1", "detections": [ {"class": "b", "conf": 0.92, "box": [100, 200, 150, 250]}, {"class": "y", "conf": 0.85, "box": [300, 400, 350, 450]} ] }步骤 4:通过 TCP 发送给上位机
笔记本作为TCP 客户端,连接到上位机的指定端口(如
192.168.1.102:8000)将 JSON 数据序列化后通过
socket.send()发送发送完成后关闭连接(或保持长连接,根据实际需求)
步骤 5:上位机接收与处理
上位机运行TCP 服务端,监听
8000端口收到数据后,解析 JSON 并记录到数据库、显示在界面、或触发报警等
四、各环节通讯与数据流向示意图
text
┌─────────────────────────────────────────────────────────────────────┐ │ 笔记本端 │ │ │ │ [相机拉流] → [YOLOv8推理] → [生成JSON] → [TCP客户端发送] │ │ ↑ ↑ ↓ │ │ │ │ │ │ │ (GigE Vision) (内部处理) (TCP协议) │ │ │ │ │ │ │ └──────────────────────┴──────────────────┘ │ │ │ │ │ ▼ │ │ [交换机] │ │ │ │ │ ▼ │ │ [TCP服务器接收] → [数据解析] → [应用处理] │ │ │ │ 上位机端 │ └─────────────────────────────────────────────────────────────────────┘
五、需要做的准备工作
硬件准备
绿联 5 口百兆交换机
3 根网线(足够长)
上位机(可用另一台笔记本/工控机/树莓派等)
软件准备
笔记本端:保持原有
hik_camera.py+hik_detection.py,额外增加 TCP 发送模块。上位机端:编写或准备一个 TCP 接收程序(Python、C#、LabVIEW、Node-RED 等均可)
六、总结
| 阶段 | 流程 | 通讯协议 | 核心配置 |
|---|---|---|---|
| 笔记本直连调试 | 相机 ↔ 笔记本 | GigE Vision | IP 同网段 |
| 交换机+上位机组网 | 相机 ↔ 交换机 ↔ 笔记本 ↔ 交换机 ↔ 上位机 | TCP + GigE Vision | 所有设备同网段,上位机监听端口 |
最关键的准备工作:
所有设备设置同一网段(例如 192.168.1.x)。
笔记本与上位机之间通过 TCP 交互检测结果(轻量数据)。
上位机运行 TCP 服务端,笔记本运行 TCP 客户端。
1、开发需基于官方SDK文档,从海康威视官网获取最新版本的SDK开发包
首先安装完成,在帮助里面找到Development
网口相机管理
设备列表区域的GigE接口可对网口相机进行相关操作,例如添加相机、显示相机、修改IP地址、组播配置等。
也可以在你的安装路径查找
