0

cvQueryFrame() 返回灰色帧,除非我在cvQueryFrame(capture). 该程序只需要打断点一次,然后我从相机中获得正确的帧。我尝试过延迟、虚拟帧、两者的组合,但如果没有那个断点,它似乎就无法工作。

cvNamedWindow("video", CV_WINDOW_AUTOSIZE);
CvCapture *capture  = cvCaptureFromCAM(1);
if (capture == NULL)
{
    return -1;
}

Mat frame;
for(int i = 0;i<10;i++)
{
    frame = cvQueryFrame(capture);
}


while(1)
{
    try
    {
    frame = cvQueryFrame(capture);
    imshow("video", frame);
    char c = cvWaitKey(1);
    if(c == 33)
        break;
    }

    catch(Exception e)
    {
        break;
    }
}
cvReleaseCapture( &capture);
cvDestroyWindow( "video" );

return 0;
4

1 回答 1

0

您可以尝试将您的 cvWaitKey 值设置为 5 或 10?相机需要时间来传送下一帧并绘制前一帧。使用 waitKey 可以让 openCV 有时间将图像绘制到屏幕上。您现在可能正在正确抓取帧,但您无法正确显示它们。

于 2012-08-22T10:13:50.513 回答