电脑使用python连接USB海康工业相机
时间: 2025-03-20 16:16:43 浏览: 58
### 使用 Python 连接并操作 USB 海康威视工业相机
为了成功使用 Python 连接并操作海康威视工业相机,以下是详细的说明:
#### 1. 安装必要的软件和驱动程序
在开始之前,需要确保已经安装了海康官方提供的 **MVS (Machine Vision Software)** 软件以及对应的硬件驱动。对于 USB3.0 协议的相机,需特别注意安装 USB3 的驱动程序[^3]。
#### 2. 设置开发环境
- 下载 MVS 并解压其中 `development/samples/python` 文件夹中的样例代码。
- 将 `MvImport.pyd` 和其他依赖库文件复制到项目目录下,并确保这些模块能够被正确导入[^2]。
#### 3. 编写核心代码
以下是一个简单的 Python 实现示例,用于连接相机、获取图像并保存至本地磁盘:
```python
from MvCameraControl_class import * # 导入海康 SDK 提供的类定义
import cv2 # OpenCV 库用于图像处理
def main():
device_list = MV_CC_DEVICE_INFO_LIST() # 创建设备列表对象
# 枚举设备
ret = MvCamera.MV_CC_EnumDevices(MV_GIGE_DEVICE | MV_USB_DEVICE, device_list)
if ret != 0:
print("枚举设备失败! 返回码:", ret)
return
if device_list.nDeviceNum == 0:
print("未找到任何设备!")
return
print(f"发现 {device_list.nDeviceNum} 台设备")
cam = MvCamera()
# 打开第一个设备
st_device_info = cast(device_list.pDeviceInfo[0], POINTER(MV_CC_DEVICE_INFO)).contents
ret = cam.MV_CC_CreateHandle(st_device_info)
if ret != 0:
print("创建句柄失败! 返回码:", ret)
return
ret = cam.MV_CC_OpenDevice(MV_ACCESS_Exclusive, 0)
if ret != 0:
print("打开设备失败! 返回码:", ret)
return
try:
# 启动抓图
ret = cam.MV_CC_StartGrabbing()
if ret != 0:
print("启动抓图失败! 返回码:", ret)
while True:
st_frame_info = MV_FRAME_OUT_INFO_EX()
memset(byref(st_frame_info), 0, sizeof(st_frame_info))
data_buf = (c_ubyte * st_frame_info.nFrameLen)()
ret = cam.MV_CC_GetOneFrameTimeout(data_buf, st_frame_info.nFrameLen, byref(st_frame_info), 1000)
if ret == 0:
img_buff = (st_frame_info.nWidth * st_frame_info.nHeight)
frame_data = np.asarray(data_buf[:])
image = frame_data.reshape((st_frame_info.nHeight, st_frame_info.nWidth))
# 显示图像
cv2.imshow('Image', image)
key = cv2.waitKey(1)
if key == ord('q'):
break
else:
print("超时或读取帧失败!")
except KeyboardInterrupt:
pass
finally:
# 停止抓图并关闭设备
cam.MV_CC_StopGrabbing()
cam.MV_CC_CloseDevice()
del cam
if __name__ == "__main__":
main()
```
上述代码实现了以下几个主要功能:
- 列举当前可用的相机设备[^1]。
- 初始化相机并与之建立通信连接。
- 获取单张图像并通过 OpenCV 展示实时画面。
- 关闭资源释放设备[^4]。
#### 4. 注意事项
- 如果相机已经被其他应用程序占用,则可能会导致无法正常初始化设备。因此,在运行脚本前应确认没有任何第三方工具正在访问该相机。
- 对于某些高级特性(如触发模式配置),可能还需要额外调整相机参数设置。
---
###
阅读全文
相关推荐
















