2_linux海康工业相机环境搭建与测试

      测试平台:

VMWare虚拟机中ubuntu 18.04

1、海康相机资料

资料下载:https://www.hikrobotics.com/cn

2e25e75fd0384ce37b8a96fa832ef037.png

具体软件:

2d6b4534509b9e0e35f824f6bfac89c4.png

MVS是海康官方用sdk自己实现的相机控制软件,Runtime组件包是sdk开发库和驱动。

我用的是图中这两个软件版本,实际安装完后MVS的Runtime是4.3.0的,后来就用MVS里面的库和头文件了。一些例子可以查看doc文件夹下内容,官方例子比较权威。

MVS安装后结果:    

d4c7c58043315e0dd6338ba598fd836d.png

我使用的是脚本安装,没用deb文件安装。

安装步骤:

1>解压MVS_STD_GML_V2.1.2_231225.zip

2>解压MVS-2.1.2_x86_64_20231225.tar.gz

     6d6135210e8da73a64626cdfe9bb2cad.png

3>进入MVS-2.1.2_x86_64_20231225中,查看INSTALL安装文件

88edfe0949a68283fb3fbc414de933ed.png

执行完第三步,没用第四步测试,直接运行了MVS,可以获取图像,环境搭建OK.    

2.使用Qt显示相机图像

这里主要是环境搭建。

9812c3db6a9c2123f62ca4dd7fa9ff21.png

Qt只用到了libMvCameraControl.so这一个库,程序完全可以用Windows下使用海康相机SDK获取图像并在Qt显示这个。

查看官方例子Trigger_ImageCallback.cpp,发现只链接libMvCameraControl.so一个库,编译后MV_CC_Initialize()未定义,根据之前的经验没用到这个函数,则先屏蔽不用,这是第一个坑。之后完全抄写之前Windows的程序,编译OK。运行,报错,无法枚举到相机设备,报错代码,0x8000000,动态导入DLL失败,经过验证,把/opt/MVS/lib/64/下的库都添加到了Runtime,可以参考上次配置opencv3的过程,第二个坑。

619fafc362f646a31742f761aa0ac20a.png    

再次运行就OK了。

效果是这样式的:

80d2474057d1ebc0edfede4d982ca159.png

部分代码:

//打印相机型号及序列号
    qDebug() << QString::fromLocal8Bit(reinterpret_cast<char*>(pDeviceInfo->SpecialInfo.stGigEInfo.chModelName));
    qDebug() << QString::fromLocal8Bit(reinterpret_cast<char*>(pDeviceInfo->SpecialInfo.stGigEInfo.chSerialNumber));


    //彩色相机判别
    if('C' == pDeviceInfo->SpecialInfo.stGigEInfo.chModelName[12]){
        m_isColor = true;
        qDebug() << "==============color=================";
    }


    // 选择设备并创建句柄
    nRet = MV_CC_CreateHandle(&handle, stDeviceList.pDeviceInfo[nIndex]);
    if (MV_OK != nRet){
        printf("MV_CC_CreateHandle fail! nRet [%x]\n", nRet);
        return false;
    }


    // 打开设备
    nRet = MV_CC_OpenDevice(handle);
    if (MV_OK != nRet){
        printf("MV_CC_OpenDevice fail! nRet [%x]\n", nRet);
        return false;
    }


    // ch:探测网络最佳包大小(只对GigE相机有效)
    if (stDeviceList.pDeviceInfo[nIndex]->nTLayerType == MV_GIGE_DEVICE){
        int nPacketSize = MV_CC_GetOptimalPacketSize(handle);
        if (nPacketSize > 0){
            nRet = MV_CC_SetIntValue(handle,"GevSCPSPacketSize",nPacketSize);
            if(nRet != MV_OK)
            {
                printf("Warning: Set Packet Size fail nRet [0x%x]!\n", nRet);
            }
        }
        else{
            printf("Warning: Get Packet Size fail nRet [0x%x]!\n", nPacketSize);
        }
    }

之前Windows下使用海康相机SDK获取图像并在Qt显示

需要程序可在公众号后台留言“linux下搭建海康相机环境”。

119f34b1cd646c70d3df3856514bacf5.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值