Windows下使用海康相机SDK获取图像并在Qt显示
点击上方蓝字可直接关注!方便下次阅读。如果对你有帮助,可以点个在看,让它可以帮助到更多同志
一、一些基础信息
MVS 版本 V3.1.0
SDK 版本:V3.2.0.3
1. 库与头文件位置
安装完MVS软件后,会有相机SDK的一些资料,如下,是动态库的资料。
2. 使用MVS软件设置相机IP
连接相机电源线与网线后,通过MVS软件设置相机IP。
3. 使用MVS显示相机图像
成功连接相机后,先设置触发模式为【Off】;再点击左上角开始按钮,之后相机开始获取图像。之后调节相机的焦距、曝光等参数,使图像清晰,如下图
4. 通过以上设置,完成了对相机的设置及测试。之后关闭软件,准备使用相机的SDK来获取图像。对于刚开始接触相机的同志,一些术语比较陌生,尤其是之后显示图像时的一些参数,开始时我也很蒙圈,现在也不是很懂,只是把效果做出来了,如果能给初学的同志提供微不足道的帮助,那真是太好了。
二、Qt 使用SDK 显示图像
恰好有黑白相机与彩色相机,所以就把这两个合二为一,全部测试了。
获取图像数据是使用SDK中的回调函数方式完成的,优点是无需自己控制获取频率,图像获取完成后自动调用。
Qt 显示图像使用的是QLabel setPixmap(QImage),QImage将图像字节数据根据参数转为图像给setPixmap。
1. 使用SDK操作相机流程
1> 初始化相机
具体流程可直接参考MVS里面的SDK接口手册,我在这里简单说下流程。
①枚举子网内指定的传输协议对应的所有设备
②选择查找到的第一台在线设备,创建设备句柄
③连接设备
④获取图像的宽和高
⑤设置触发方式为Off
2> 注册回调函数获取图像
由于获取彩色相机与黑白相机的回调函数不同,这里做了区分。通过获取相机型号,判断特定字符来完成的。
if(m_isColor) { int ret = MV_CC_RegisterImageCallBackForRGB(handle, CameraWidget::getCameraImageCallback, this); if(MV_OK != ret) qDebug() << "=======faild =======" ; } else MV_CC_RegisterImageCallBackEx(handle, CameraWidget::getCameraImageCallback, this);
3> 控制相机开始取图
只有相机开始取图后,才会进入回调函数,否则是不会进入回调函数的。
MV_CC_StartGrabbing(handle);
2. 效果如下
彩色图像显示,截图下方是相机型号与序列号
黑白图像效果
三、小结
希望通过这篇文章能帮到刚开始入门相机的同志。
在获取彩色图像时,使用的回调函数获取的RGB24的图像,此时为图像数据分配空间应是 图像宽度*图像高度*3;获取黑白图像对应分配数据空间是图像宽度*图像高度。
彩色图像的QImage为QImage::Format_RGB888
QImage((uchar*)mpData,m_imageWidth,m_imageHeight,QImage::Format_RGB888);
黑白图像的QImage为QImage::Format_Indexed8
QImage((uchar*)mpData,m_imageWidth,m_imageHeight,QImage::Format_Indexed8);