【发布时间】:2015-03-21 11:02:50
【问题描述】:
我试图在我的 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 错误以及如何解决?
【问题讨论】: