news 2026/7/3 8:58:52

python opencv 调用 海康威视工业相机(又全又细又简洁)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
python opencv 调用 海康威视工业相机(又全又细又简洁)

安装依赖

确保已安装OpenCV和hikvision官方SDK(HCNetSDK)。OpenCV可通过pip安装:

pip install opencv-python

海康SDK需从官网下载,解压后根据系统类型(Windows/Linux)安装驱动和库文件。

初始化相机连接

使用海康SDK的NET_DVR_Login_V40函数登录设备。需要设备IP、用户名、密码:

from ctypes import * import cv2 # 加载海康SDK hik_sdk = cdll.LoadLibrary('./libhcnetsdk.so') # Linux路径示例 # 设备登录参数 device_info = NET_DVR_DEVICEINFO_V40() login_params = NET_DVR_USER_LOGIN_INFO() login_params.bUseAsynLogin = 0 login_params.sDeviceAddress = "192.168.1.64".encode('utf-8') login_params.sUserName = "admin".encode('utf-8') login_params.sPassword = "password".encode('utf-8') # 登录设备 user_id = hik_sdk.NET_DVR_Login_V40(byref(login_params), byref(device_info)) if user_id < 0: print("登录失败,错误码:", hik_sdk.NET_DVR_GetLastError())

https://www.zhihu.com/zvideo/1994569686508122814/
https://www.zhihu.com/zvideo/1994569686768178579/
https://www.zhihu.com/zvideo/1994569684880745186/
https://www.zhihu.com/zvideo/1994569683186255158/
https://www.zhihu.com/zvideo/1994569682783586161/
https://www.zhihu.com/zvideo/1994569682389325822/
https://www.zhihu.com/zvideo/1994569677238728015/
https://www.zhihu.com/zvideo/1994569676244685752/
https://www.zhihu.com/zvideo/1994569675984633884/
https://www.zhihu.com/zvideo/1994569673912627338/
https://www.zhihu.com/zvideo/1994569673384167055/
https://www.zhihu.com/zvideo/1994569671656112881/
https://www.zhihu.com/zvideo/1994569669596693190/
https://www.zhihu.com/zvideo/1994569667394688542/
https://www.zhihu.com/zvideo/1994569666249643514/
https://www.zhihu.com/zvideo/1994569665691813199/
https://www.zhihu.com/zvideo/1994569665029096195/
https://www.zhihu.com/zvideo/1994569663816938831/
https://www.zhihu.com/zvideo/1994569661929497422/
https://www.zhihu.com/zvideo/1994569661237454557/
https://www.zhihu.com/zvideo/1994569660566353291/
https://www.zhihu.com/zvideo/1994569660897726783/
https://www.zhihu.com/zvideo/1994569660025308385/
https://www.zhihu.com/zvideo/1994569658183988614/
https://www.zhihu.com/zvideo/1994569657361929213/
https://www.zhihu.com/zvideo/1994569655495460306/
https://www.zhihu.com/zvideo/1994569653591229700/
https://www.zhihu.com/zvideo/1994569653993886152/
https://www.zhihu.com/zvideo/1994569654266532186/
https://www.zhihu.com/zvideo/1994569653578655542/
https://www.zhihu.com/zvideo/1994569653842907927/
https://www.zhihu.com/zvideo/1994569653675118687/
https://www.zhihu.com/zvideo/1994569647358506510/
https://www.zhihu.com/zvideo/1994569646762898236/
https://www.zhihu.com/zvideo/1994569647014577147/
https://www.zhihu.com/zvideo/1994569646167315608/
https://www.zhihu.com/zvideo/1994569645391376785/
https://www.zhihu.com/zvideo/1994569644510569158/
https://www.zhihu.com/zvideo/1994569643025777244/
https://www.zhihu.com/zvideo/1994569641603916999/
https://www.zhihu.com/zvideo/1994569641608102417/
https://www.zhihu.com/zvideo/1994569641595515416/
https://www.zhihu.com/zvideo/1994569640622453612/
https://www.zhihu.com/zvideo/1994569639607441023/
https://www.zhihu.com/zvideo/1994569639267702636/
https://www.zhihu.com/zvideo/1994569639645164124/
https://www.zhihu.com/zvideo/1994569637866784452/
https://www.zhihu.com/zvideo/1994569637778710888/
https://www.zhihu.com/zvideo/1994569638638531948/
https://www.zhihu.com/zvideo/1994569637694816654/

实时取流配置

通过NET_DVR_RealPlay_V40启动实时流,并设置回调函数接收帧数据:

# 回调函数定义(C类型) def real_data_cb(lRealHandle, dwDataType, pBuffer, dwBufSize, pUser): if dwDataType == NET_DVR_SYSHEAD: # 初始化FFMPEG解码器等(如需) pass elif dwDataType == NET_DVR_STREAMDATA: # 将数据转为OpenCV格式 frame_data = cast(pBuffer, POINTER(c_byte * dwBufSize)).contents frame_np = np.frombuffer(frame_data, dtype=np.uint8) frame = cv2.imdecode(frame_np, cv2.IMREAD_COLOR) cv2.imshow("Hikvision Stream", frame) cv2.waitKey(1) # 注册回调 REALDATACALLBACK = CFUNCTYPE(None, c_long, c_uint, POINTER(c_byte), c_uint, c_void_p) callback_func = REALDATACALLBACK(real_data_cb) # 启动实时流 play_params = NET_DVR_PREVIEWINFO() play_params.hPlayWnd = 0 play_params.lChannel = 1 # 通道号 play_params.dwStreamType = 0 # 主码流 play_params.dwLinkMode = 0 # TCP real_handle = hik_sdk.NET_DVR_RealPlay_V40(user_id, byref(play_params), callback_func, None)

帧处理与显示

在回调函数中完成帧数据到OpenCV格式的转换后,可进行图像处理:

# 示例:灰度化处理 gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) cv2.imshow("Processed Frame", gray_frame)

释放资源

程序结束时需释放资源:

hik_sdk.NET_DVR_StopRealPlay(real_handle) hik_sdk.NET_DVR_Logout(user_id) hik_sdk.NET_DVR_Cleanup() cv2.destroyAllWindows()

注意事项

  • 确保设备网络可达,防火墙放行相应端口(默认8000)。
  • 海康SDK需与相机固件版本兼容,建议使用最新SDK。
  • 工业相机可能需要额外配置参数(如曝光、增益),通过NET_DVR_SetDVRConfig实现。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/1 8:40:17

企业考勤财务智能报表系统_SpringBoot+Vue+Springcloud微服务分布式

以下是关于企业考勤财务智能报表系统采用SpringBootVueSpringCloud微服务分布式架构的技术实现方案&#xff1a;技术架构设计后端采用SpringCloud Alibaba微服务套件&#xff08;Nacos注册中心、Sentinel流量控制、Seata分布式事务&#xff09;&#xff0c;前端使用Vue3Element…

作者头像 李华
网站建设 2026/7/1 8:21:28

Spring Boot 自动配置原理与自定义 Starter 开发实战

Spring Boot 自动配置原理Spring Boot 自动配置的核心是通过条件化配置&#xff08;Conditional&#xff09;实现。当满足特定条件时&#xff0c;相关的 Bean 会被自动加载到 Spring 容器中。自动配置的触发依赖于 spring-boot-autoconfigure 模块中的 META-INF/spring/org.spr…

作者头像 李华
网站建设 2026/7/1 15:47:58

上线前检查清单模板及工具指南:告别手忙脚乱,实现稳定发布

周五下午6点&#xff0c;所有人都盯着屏幕&#xff1a;“数据库脚本执行了吗&#xff1f;”“配置文件更新了没有&#xff1f;”“监控告警设置了么&#xff1f;”——这些问题像复读机一样在会议室回响。而最可怕的是&#xff0c;上线后发现&#xff1a;“完了&#xff0c;有个…

作者头像 李华
网站建设 2026/7/1 15:04:56

web智慧社区设计与实现信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】

摘要 随着城市化进程的加速和信息技术的飞速发展&#xff0c;智慧社区成为提升居民生活质量、优化社区管理效率的重要方向。传统社区管理模式存在信息孤岛、管理效率低下、服务响应滞后等问题&#xff0c;难以满足现代居民对便捷化、智能化生活的需求。智慧社区信息管理系统通过…

作者头像 李华
网站建设 2026/7/1 8:21:34

什么是PROFINET

文章目录为什么需要PROFINETPROFINET IO系统有哪些组成PROFINET是如何工作的PROFINET采用TCP/IP协议作为基础&#xff0c;并在其应用层上增加了实时机制和通讯协议&#xff0c;因此具有和标准以太网相同的一些特性如全双工、多种拓扑结构等&#xff0c;其速率可达千兆。另外它也…

作者头像 李华