2011-07-19 44 views
1

我在我的筆記本電腦上安裝了OpenCV 2.1,並試圖實施人臉檢測程序。我爲我的項目使用了Logitech C210。我知道相機是好的,因爲軟件檢測並顯示它,並且在樣本目錄中啓動facedetect.exe顯示相機正在工作。但不知何故,當我在VS2010 Ultimate中使用原始的facedetect.cpp代碼時,我甚至無法使cvCaptureFromCAM工作!這裏是我的代碼:OpenCV cvCaptureFromCAM返回零

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

using namespace std; 
using namespace cv; 

int main(int, char**) { 
IplImage* frame; 
// CvCapture* cap = cvCaptureFromCAM(-1); 
// cvNamedWindow("Example2_9", CV_WINDOW_AUTOSIZE); 
CvCapture* capture; 
cvWaitKey(20); 
capture = cvCreateCameraCapture(-1); //yes, if 0 doesn't work try with -1 
//assert(capture != NULL); 

for(;;) { 
    frame = cvQueryFrame(capture); 

    if(frame == NULL) 
     return -1; 

    imshow("cap", frame); 
    if(waitKey(30) >= 0) 
     break; 
} 

} 

好了,所以這是不實際的facedetect代碼(太長了),但在這裏凸顯了問題就認爲:

使用斷點我發現價值捕獲在cvCaptureFromCAM之後是0x000000。這不應該發生,是嗎?有人能告訴我發生了什麼事嗎?

+0

許多可能的重複,例如:[OpenCV 2.3.0 +:cvCaptureFromCAM返回null](http://stackoverflow.com/questions/6731593/opencv-2-3-0-cvcapturefromcam-returns-null),[cvCapturefromCAM ()返回NULL](http://stackoverflow.com/questions/6133021/cvcapturefromcam-returns-null)和[cvCreateCameraCapture返回null](http://stackoverflow.com/questions/3197707/cvcreatecameracapture-returns-null) –

+0

早些時候看到,我認爲這是不同的。我在OpenCV 2.1中遇到了問題,而不是2.3。在Windows平臺上。 – Sodrohu

+0

您是否檢查了上述所有3個副本,即不只是第一個? –

回答

0

嘗試升級到OpenCV 2.4.2。不完全相同的問題(對於我來說queryFrame()總是返回NULL使用v2.2.0),但現在它像一個魅力。 也許只是兼容性問題。