2012-05-03 251 views
0

我在Windows中使用OpenCV 2.1和Visual Studio 2008。我試圖抓住CCD相機的框架,並希望在Windows上顯示。相機與PAL格式。相機正在檢測,但顯示空白灰色屏幕。opencv - cvCaptureFromCAM(CV_CAP_DSHOW)捕獲空白幀

我發現很多帖子都與黑屏有關,但沒有人在我的情況下工作。所以發帖後我發佈這個問題。

下面是我的代碼:

#include "stdafx.h" 
#include "cv.h" 
#include "cxcore.h" 
#include "highgui.h" 
#include <iostream> 

int main(int argc, char* argv[]) 
{ 
    cvNamedWindow("mywindow", CV_WINDOW_AUTOSIZE); 

    CvCapture* capture = cvCaptureFromCAM(CV_CAP_DSHOW); 

    if (!capture) { 
     fprintf(stderr, "ERROR: capture is NULL \n"); 
     getchar(); 
     return -1; 
    } 

    while (1) { 
     IplImage* frame = cvQueryFrame(capture); 

     if (!frame) { 
      fprintf(stderr, "ERROR: frame is null...\n"); 
      getchar(); 
      break; 
     } 
     else 
     { 
      fprintf(stderr, "Size of camera frame %d X %d\n",frame->width,frame->height); 
     } 

     cvShowImage("mywindow", frame); 

     if ((cvWaitKey(10) & 255) == 27) break; 
    } 

    // Release the capture device housekeeping 
    cvReleaseCapture(&capture); 
    cvDestroyWindow("mywindow"); 

    return 0; 
} 

上面的代碼返回幀尺寸爲320×240,但空白屏幕。

代碼工作正常的USB攝像頭,帶有代碼CvCapture* capture = cvCaptureFromCAM(1);

我在我的船上使用圓剛金卡片相機。那麼我是否需要使用SDK來使用本相機,或者是否有使用CCD相機的選項?

驅動程序安裝正確,並檢查EzCaptureVC應用程序。

回答

2

OpenCV需要支持你的相機,否則不能保證它的工作:檢查compatibility list

另外2.1它是非常過時的。我建議你用2.3.1再試一次,因爲這方面有一些改進。

+0

感謝您快速回復karlphillip。我檢查相機兼容性列表,我的相機不在該列表中。所以我打算使用opencv 2.3.1,我會讓我們知道我的結果,但讓我添加一些關於我之前遇到的結果的更多信息。我使用不同的攝像頭捕捉卡前,我目前指定的代碼工作正常。我更換相機採集卡以獲得更高的功能,並且我丟失了相機的供稿。 – user934179

+0

好吧,以確認問題是**相機和opencv **,而不是您的代碼和opencv。 – karlphillip

+0

現在我改變視頻捕捉模式。我嘗試使用videoInput捕捉相機,它正在工作...但出現一個問題是,我無法更改videoInput中的視頻大小。它顯示在320X280默認大小我需要它在640X480大小。任何幫助??????? – user934179