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);

需要完整Qt 工程可在公众号后台留言。

每日鸡汤:

        “昨日种种,皆成今我,切莫思量,更莫哀,从今往后,怎么收获,怎么栽。”

            

发布了91 篇原创文章 · 获赞 94 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/ACK_ACK/article/details/104509412
今日推荐