T_Sammy 2020-03-24 16:51 采纳率: 0%
浏览 1046

QT5 + opencv3.4.6 做的rtsp流读取问题

在VLC中可以正常访问的rtsp流


图片说明

代码中无法访问,请大神指点一下问题谢谢!

    timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()), this, SLOT(getframe()));

    _videocap = cv::VideoCapture("rtsp://admin:123!@192.168.1.6");//大门摄像头
    qDebug() << "1111:" << _videocap.isOpened();

    double rate= _videocap.get(CV_CAP_PROP_FPS);
    qDebug() << "rate:" << rate;

    timer->start(33);//为避免出现延时累积,每33毫秒刷新界面

槽函数:

void CCamera::getframe()
{
    _videocap.read(_srcImge);//获取到一帧

    if(!_srcImge.data)//如果取不到数据,终止计时器
        timer->stop();

    Size dsize = Size(ui->LabDisp->width(), ui->LabDisp->height());
    cv::resize(_srcImge, _srcImge, dsize);

    cvtColor(_srcImge,_srcImge,CV_BGR2RGB);//这种更方便好用
    QImage image2=QImage((const unsigned char*)_srcImge.data,_srcImge.cols,_srcImge.rows,QImage::Format_RGB888);
    ui->LabDisp->setPixmap(QPixmap::fromImage(image2));
}

报错如下:

16:33:13: Starting E:\QT_src\build-CameraDisplay-Desktop_Qt_5_9_9_MinGW_32bit-Debug\debug\CameraDisplay.exe ...
1111: false
rate: 0
OpenCV: terminate handler is called! The last OpenCV error is:
OpenCV(3.4.6) Error: Assertion failed (!ssize.empty()) in resize, file D:\opencv3.4.6\opencv\sources\modules\imgproc\src\resize.cpp, line 3718

虽然报错是opencv的resize函数问题,但我不清楚是不是这儿有问题。原因是写了个加载图片的demo是正常的。
我查了一下,说路径不对的很多,但是我这里似乎不是这个问题啊?

  • 写回答

3条回答

  • franzhong 2020-03-24 17:45
    关注

    把编译目录下的bin文件夹总的opencv_ffmpeg*.dll(*代表版本号,如3.4.5,就是opencv_ffmpeg345.dll)拷贝到exe所在路径或者环境变量目录下。再试一下

    评论

报告相同问题?

悬赏问题

  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作