当前位置: 首页 > news >正文

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实现。
http://www.jsqmd.com/news/241014/

相关文章:

  • Arduino安装驱动手动加载步骤:项目应用实例
  • 一文说清LTspice电路仿真时域分析核心要点
  • 完整指南:AUTOSAR架构图配置工具链使用
  • STM32中HID协议通信的完整指南与配置步骤
  • xTaskCreate与外设驱动集成:从零实现
  • Windows系统下python新一代三方库管理工具uv及VSCode配置
  • STM32主频提升秘诀:PLL高速时钟深度剖析
  • ST7789背光控制电路原理及典型应用解析
  • 企业考勤财务智能报表系统_SpringBoot+Vue+Springcloud微服务分布式
  • 互联网大厂Java面试:从Java SE到微服务的技术深度剖析
  • 上线前检查清单模板及工具指南:告别手忙脚乱,实现稳定发布
  • IP6559至为芯支持AC双口快充的100W升降压车充方案SOC芯片
  • 项目应用中AUTOSAR网络管理常见问题汇总
  • proteus仿真51单片机入门必看:手把手搭建第一个仿真工程
  • 紧急Bug处理:流程、四阶段控制法及工具方法
  • 每次改老代码都提心吊胆?4种遗留代码的对症药方和必备工具
  • [特殊字符]_可扩展性架构设计:从单体到微服务的性能演进[20260113164432]
  • SSD1306驱动开发:手把手教程(从零实现)
  • 智能环境监测仪:proteus数码管实时数据显示教程
  • 提示工程架构师避坑指南:智能化提示响应体系常见误区与解决方案
  • ⚡_实时系统性能优化:从毫秒到微秒的突破[20260113165144]
  • USB-Serial Controller D驱动下载实战案例(含常见问题)
  • 字节 2025 绩效考评开始,新调整来了!
  • [特殊字符]️_开发效率与运行性能的平衡艺术[20260113165855]
  • Windows设备管理器驱动安装:操作指南(手把手教学)
  • 深度剖析STLink接口引脚图:初学者需要知道的一切
  • web智慧社区设计与实现信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】
  • 政策驱动工业智能化进程加速,东土科技以“根技术”筑基产业未来
  • 国新基金 1.1 亿元入局!光亚鸿道新一轮融资落地,助推工业信创生态崛起
  • 企业级汽车票网上预订系统管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】