前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2_linux海康工业相机环境搭建与测试

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

作者头像
用户5908113
发布2024-02-22 08:35:41
1280
发布2024-02-22 08:35:41
举报
文章被收录于专栏:Pou光明Pou光明

测试平台:

VMWare虚拟机中ubuntu 18.04

1、海康相机资料

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

具体软件:

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

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

MVS安装后结果:

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

安装步骤:

1>解压MVS_STD_GML_V2.1.2_231225.zip

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

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

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

2.使用Qt显示相机图像

这里主要是环境搭建。

Qt只用到了libMvCameraControl.so这一个库,程序完全可以用****这个。

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

再次运行就OK了。

效果是这样式的:

部分代码:

代码语言:javascript
复制
    //打印相机型号及序列号
    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);
        }
    }
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-02-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Pou光明 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档