海康摄像头QML+openCV显示的踩坑记录

CSDN文章都翻遍了,STACKoverflow的阿三哥都被我问烦了,折腾了两个礼拜...

记录一下代码吧

首先我这个是webcam,想用openCV的caputure(0)方式是行不通的。只能使用rtsp协议,但我尝试后无果,只能选用原生海康SDK开启摄像头。关键代码如下:

tar_dev = MV_CC_OpenDevice(m_devhandle);//m_devhandle是设备句柄
if(MV_OK != tar_dev){
    MV_CC_DestroyHandle(m_devhandle);
    m_devhandle = MV_NULL;
}

开启相机后进行采集数据。

MV_CC_StartGrabbing(m_devhandle);

同时设备显示数据。

//构造函数中:
timer = new QTimer(this);
connect(timer,SIGNAL(timeout()),this,SLOT(displayImage()));//显示图片的槽函数

//开始采集后定时器开启
timer->start(720);
//-----------------渲染图片
void HiCamera::displayImage()
{
    int tempValue;
    unsigned int nRecvBufSize = 0;
    MVCC_INTVALUE stParam;
    memset(&stParam, 0, sizeof(MVCC_INTVALUE));
    int temp = MV_CC_GetIntValue(m_devhandle, "PayloadSize", &stParam);
    if (temp != 0)
    {
        printf("over point%d\n",1);
        return;
    }
    nRecvBufSize = stParam.nCurValue;
    unsigned char* m_pBufForDriver = (unsigned char *)malloc(nRecvBufSize);
    MV_FRAME_OUT_INFO_EX stImageInfo;
    memset(&stImageInfo, 0, sizeof(MV_FRAME_OUT_INFO_EX));
    tempValue= MV_CC_GetOneFrameTimeout(m_devhandle, m_pBufForDriver, nRecvBufSize, &stImageInfo, 700);  //主动调用取图
    if(tempValue!=0)
    {
         printf("over %x\n",tempValue);
        return;
    }
    
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值