安装海康sdk
从海康威视官网下载对应的工业相机sdk(如mv-sdk),解压后运行安装程序。确保安装路径无中文或特殊字符。安装完成后,将sdk的lib目录添加到系统环境变量(如windows的path),或直接复制*.dll文件到python脚本同级目录。
配置python依赖
安装python与海康sdk交互的库,通常通过ctypes调用动态链接库。确保python版本与sdk的位数一致(32/64位)。示例安装命令:
pip install numpy opencv-python # 可选,用于图像处理
初始化sdk与设备
通过ctypes加载sdk动态库,并调用初始化函数。示例代码:
import ctypes
# 加载sdk库
sdk_lib = ctypes.cdll.loadlibrary("mvcameracontrol.dll")
# 初始化设备
device_list = ctypes.c_void_p()
sdk_lib.mv_cc_enumdevices(ctypes.byref(device_list))打开相机并设置参数
选择设备并打开连接,配置采集参数(如分辨率、曝光时间):
# 选择第一个设备
handle = ctypes.c_void_p()
sdk_lib.mv_cc_createhandle(ctypes.byref(handle), device_list)
# 打开设备
ret = sdk_lib.mv_cc_opendevice(handle)
if ret != 0:
raise runtimeerror("failed to open device")
# 设置参数(示例:曝光时间)
exposure_time = ctypes.c_float(1000.0)
sdk_lib.mv_cc_setfloatvalue(handle, "exposuretime", exposure_time)开始采集图像
启动相机采集并获取图像数据流:
# 开始采集
sdk_lib.mv_cc_startgrabbing(handle)
# 获取图像数据
data_buf = (ctypes.c_ubyte * 1024 * 1024)() # 缓冲区
frame_info = ctypes.create_string_buffer(1024)
ret = sdk_lib.mv_cc_getoneframetimeout(handle, data_buf, len(data_buf), frame_info, 1000)
if ret != 0:
raise runtimeerror("failed to grab frame")转换与显示图像
将原始数据转换为opencv格式并显示:
import numpy as np
import cv2
# 转换为numpy数组
img_data = np.frombuffer(data_buf, dtype=np.uint8)
img = cv2.imdecode(img_data, cv2.imread_color)
# 显示图像
cv2.imshow("industrial camera", img)
cv2.waitkey(0)释放资源
停止采集并关闭设备:
# 停止采集 sdk_lib.mv_cc_stopgrabbing(handle) # 关闭设备 sdk_lib.mv_cc_closedevice(handle) sdk_lib.mv_cc_destroyhandle(handle)
注意事项
- 确保sdk版本与相机型号匹配,部分函数名可能因版本不同存在差异。
- 错误处理需检查每个api调用的返回值,海康sdk通常返回
0表示成功。 - 多线程环境下需加锁或使用回调机制处理图像数据。
总结
到此这篇关于python通过调用海康sdk打开工业相机的文章就介绍到这了,更多相关python海康sdk打开工业相机内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论