2011-03-03 35 views
1

我正在寫一個程序,需要使用opencv從網絡攝像頭捕捉。我正在使用羅技C260相機和OpenCV2.2,Windows XP,QT Creator。下面是一個例子一塊我的代碼:OpenCV2.2 cvCaptureFromCAM問題...只返回綠色屏幕。 (羅技C260相機)

int i = 0; 

int arg = 0; 
CvCapture *pCapturedImage = cvCaptureFromCAM(arg); 

cvNamedWindow("Example1", CV_WINDOW_AUTOSIZE); 
IplImage* img1= cvQueryFrame(pCapturedImage); 
IplImage* img2; 
IplImage* merged; 
int MAX_FRAMES = 10; 
    for (int i = 0; i < MAX_FRAMES; i++){ 
    pCapturedImage = cvCaptureFromCAM(arg); 
    if (!pCapturedImage){ 
     printf("Uh oh"); 
    } 
    img1 = cvQueryFrame(pCapturedImage); 

    printf("Query"); 
    cvShowImage("Example1", img1); 
    cvWaitKey(0); 
} 
for (int i = 0; i < MAX_FRAMES; i++){ 
    printf("Enter"); 
    img2 = img1; 
    pCapturedImage = cvCaptureFromCAM(arg); 
    if (!pCapturedImage){ 
     printf("Uh oh"); 
    }else 
    printf("Capture"); 
    img1 = cvQueryFrame(pCapturedImage); 
    printf("Query"); 
    cvShowImage("Example1", img1); 
    cvWaitKey(0); 
    img1 = mergePhotos(img2, img1, i*25, i*25); 
    printf("Merge"); 
    cvShowImage("Example1", img1); 
    cvWaitKey(0); 

}

它不工作,雖然。在前10次拍攝中我只得到了一張,之後拍攝變爲空(我會張貼一張照片,但我不允許)。

我很難過。我試過cvCaptureFromCAM和cvCreateCameraCapture。我試着改變這個函數的參數。我試過所有的USB端口。

有沒有人知道問題可能是什麼?我非常感謝所有幫助。

回答

0

你需要調用cvCaptureFromCAM(或cvCreateCameraCapture)只有一次,循環外,初始化並打開攝像頭。然後你可以通過每次簡單地調用cvQueryFrame來獲得新的框架。 (將cvCapture視爲幀源,而不是幀本身。)

可能有一些操作系統限制,您無法打開相機資源超過幾次......這可能是解釋你描述的「僅10幀」。