首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Qt显示摄像机图像时显示高图形用户界面错误: V4L/V4L2: VIDIOC_S_CROP

使用Qt显示摄像机图像时显示高图形用户界面错误: V4L/V4L2: VIDIOC_S_CROP
EN

Stack Overflow用户
提问于 2015-03-21 19:02:50
回答 1查看 857关注 0票数 0

我试着在我的qlabel上看到摄像头,但是我在opencv窗口中也看不到它。在我启动应用程序后,opencv创建了一个小窗口,但没有图像。在日志中,我可以看到错误:

代码语言:javascript
复制
HIGHGUI ERROR: V4L/V4L2: VIDIOC_S_CROP

(<unknown>:7534): Gtk-WARNING **: gtk_disable_setlocale() must be called before gtk_init()
In capture... 
Corrupt JPEG data: 1 extraneous bytes before marker 0xd9
Corrupt JPEG data: 1 extraneous bytes before marker 0xd9
Corrupt JPEG data: 1 extraneous bytes before marker 0xd9

下面是我的简单代码:

代码语言:javascript
复制
void MainWindow::on_pushButton_clicked()
{
    CvCapture* capture = 0;
    cv::Mat frame, frameCopy;

    capture = cvCaptureFromCAM(CV_CAP_ANY); //0=default, -1=any camera, 1..99=your camera
    if(!capture)
    {
        qDebug() << "No camera detected";
    }   

    if( capture )
    {
        qDebug() << "In capture...";

        for(;;)
        {
            IplImage* iplImg = cvQueryFrame( capture );
            frame = iplImg;
            if( frame.empty() )
                break;
            if( iplImg->origin == IPL_ORIGIN_TL )
                frame.copyTo( frameCopy );
            else
                flip( frame, frameCopy, 0 );

            if( cv::waitKey( 10 ) >= 0 )
                break;
            cv::imshow("result", frameCopy);
        }
    }
    //    cv::waitKey(0);

    cvReleaseCapture(&capture);
    cvDestroyWindow("result");

}

你能告诉我为什么会出现HIGHGUI错误以及如何解决吗?

EN

回答 1

Stack Overflow用户

发布于 2015-03-21 22:25:13

您正在从您的相机获取损坏的数据。所以jpeg解码器不能解码它。您可以尝试增加cvWaitKey()的持续时间。

我希望它能为你工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29181947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档