我想在我的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错误以及如何解决它?
答案 0 :(得分:0)
您的相机损坏了数据。所以jpeg解码器无法解码它。您可以尝试增加cvWaitKey()的持续时间。
我希望它适合你。