2012-07-30 73 views
0

cvQueryFrame()返回灰色框架,除非我把一個斷點放在cvQueryFrame(capture)。該程序只需要打斷點一次,然後我從相機得到適當的幀。我嘗試過延遲,虛擬幀,兩者的結合,但它似乎沒有這個斷點就沒有工作。cvQueryFrame()返回灰色框架

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; 

回答

0

您可以嘗試設置您的cvWaitKey值爲5或10?相機需要時間來傳送下一幀並繪製前一幀。使用waitKey允許openCV有時間將圖像繪製到屏幕上。您現在可能正確抓取了框架,但您無法正確顯示它們。