使用pyqt5开发海康工业相机



前言

学习完毕pyqt5后,自己做一个工业机器视觉的项目。第一步先学会工业相机的开发。因为海康相机的市场占有量较大,开发文档丰富,且最新的MVS提供了python的开发实例,所以在此使用pyqt5+python进行相机开发。
打开相机界面
参数设置界面


提示:先去海康官网下载海康相机的sdk

一、下载安装海康工业相机的SDK

进入海康机器人官方网站的下载中心,https://www.hikrobotics.com/service/soft.htm?type=1。下载【机器视觉工业相机客户端MVS V3.2.1(Windows)】。在电脑中安装

二、查看开发文档及开发实例

1.查看开发文档

打开文件夹MVS\Development\Documentations,查看开发文档:工业相机SDK开发指南©.chm
开发过程

2.查看开发代码例子

打开文件夹:MVS\Development\Samples\Python。查看文件中的python例子。
python开发例子
打开BasicDemo中的BasicDemo.py。点击运行。
海康使用tk及cv2开发的示例demo
目标就是使用pyqt5开发出可简单使用的机器视觉系统,故用pyqt5重新编写界面程序。

三、开发过程中的重点/难点

1.使用python调用c的dll文件

hk的实例中,代码的调用大致如下:
python调用c的库
关于python调用c的库的语法,详见官方文档:https://docs.python.org/3/library/ctypes.html#pointers

2.使用Qimage显示相机的图像

image = QImage(im, width, height, QImage.Format_Indexed8)
# 在主界面的label上显示相机图像
self.label.setPixmap(QPixmap.fromImage(image))
self.label.setScaledContents(True)
# 在相机参数设置的label上显示相机图像
self.setCampara.label.setPixmap(QPixmap.fromImage(image))

总结

本次大致介绍了使用要点。下次详细说明dll动态库的调用,以及Qiamge的使用方法。

  • 13
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 58
    评论
以下是使用Python和OpenCV调用海康工业相机并显示的步骤: 1.安装海康SDK并配置环境变量。 2.安装Python和OpenCV。 3.导入必要的库和模块。 ```python import sys from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout import cv2 from HCNetSDK import * ``` 4.创建一个Qt窗口并在其中添加一个标签。 ```python class Video(QWidget): def __init__(self): super().__init__() self.label = QLabel(self) self.layout = QVBoxLayout() self.layout.addWidget(self.label) self.setLayout(self.layout) ``` 5.初始化海康SDK并登录相机。 ```python def init_camera(): # 初始化SDK if not NET_DVR_Init(): print("SDK初始化失败") sys.exit() # 登录相机 device_info = NET_DVR_DEVICEINFO_V30() device_ip = "192.168.1.64" device_port = 8000 device_username = "admin" device_password = "12345" device_id = NET_DVR_Login_V30(device_ip, device_port, device_username, device_password, device_info) if device_id < 0: print("登录相机失败") sys.exit() return device_id ``` 6.获取相机数据并将其转换为OpenCV支持的格式。 ```python def get_frame(device_id): # 获取相机数据 frame = NET_DVR_GetRealPlayImage(device_id) # 将相机数据转换为OpenCV支持的格式 frame_data = frame.contents.pBuffer frame_size = frame.contents.dwSize frame_image = np.frombuffer(frame_data, dtype=np.uint8) frame_image = frame_image.reshape((frame_size[1], frame_size[0], 4)) frame_image = cv2.cvtColor(frame_image, cv2.COLOR_BGRA2BGR) return frame_image ``` 7.在Qt窗口中显示相机数据。 ```python def show_camera(): app = QApplication(sys.argv) video = Video() video.show() device_id = init_camera() while True: frame_image = get_frame(device_id) frame_image = cv2.resize(frame_image, (640, 480)) frame_image = cv2.cvtColor(frame_image, cv2.COLOR_BGR2RGB) video.label.setPixmap(QPixmap.fromImage(QImage(frame_image.data, frame_image.shape[1], frame_image.shape[0], QImage.Format_RGB888))) if cv2.waitKey(1) & 0xFF == ord('q'): break NET_DVR_Logout(device_id) NET_DVR_Cleanup() sys.exit(app.exec_()) ``` 8.运行程序并显示相机数据。 ```python if __name__ == '__main__': show_camera() ```
评论 58
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值