python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > python海康SDK打开工业相机

python通过调用海康SDK打开工业相机完全流程

作者:普通网友

海康威视提供了Python SDK,用于与他们的摄像头和其他设备进行交互,这篇文章主要介绍了python通过调用海康SDK打开工业相机的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下

安装海康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)

注意事项

总结 

到此这篇关于python通过调用海康SDK打开工业相机的文章就介绍到这了,更多相关python海康SDK打开工业相机内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文