我试着在我的qlabel上看到摄像头,但是我在opencv窗口中也看不到它。在我启动应用程序后,opencv创建了一个小窗口,但没有图像。在日志中,我可以看到错误:
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下面是我的简单代码:
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错误以及如何解决吗?
发布于 2015-03-21 22:25:13
您正在从您的相机获取损坏的数据。所以jpeg解码器不能解码它。您可以尝试增加cvWaitKey()的持续时间。
我希望它能为你工作。
https://stackoverflow.com/questions/29181947
复制相似问题