2013-01-07 63 views
1

在OpenCV的2.3.1(從源代碼構建),C++的片段的Python QueryFrame返回無,但C++綁定在Ubuntu 10.04的工作

cvNamedWindow("Camera", 1); 
CvCapture* capture = cvCaptureFromCAM(CV_CAP_ANY); 
while (1) { 
    IplImage* frame = cvQueryFrame(capture); 
    cvShowImage("Camera", frame); 
    key = cvWaitKey(10); 
    ... 

將打開一個窗口,並顯示從我的ThinkPad攝像頭的視頻,但

import cv2.cv as cv 
# or import cv 
cv.NamedWindow("Camera", 1) 
capture = cv.CaptureFromCAM(-1) 
while True: 
    frame = cv.QueryFrame(capture) 
    cv.ShowImage("Camera", frame) 
    key = cv.WaitKey(10) 
    ... 

失敗(窗口是灰色的),因爲cv.QueryFrame回報None(和筆記本電腦相機上的燈不亮。)

任何想法,可怎麼回事(一nd我可能會如何補救)? cv.QueryFrame工作時顯示.jpg,所以這似乎是一個相機問題。

+0

您是否嘗試過將不同的數字傳遞給'CaptureFromCAM'?即使只有一個相機,您應該嘗試明確選擇相機。 – Tim

+0

嘗試了-1,0和1.相同的結果。 (它是唯一的相機) –

+0

另請參閱http://stackoverflow.com/questions/18815187/opencv-python-queryframe-return-none哪些爲我修復它(它需要一點時間,相機完全打開)。 – Hugo

回答

3

找到一個解決方法,通過opencv+python+linux+webcam = cannot capture frames,我將離開這裏爲後代。

安裝lib4vlapt-get install libv4l-dev),並在步驟cmake建築OpenCV的,通-D WITH_4VL=ON。 (我一直在關閉)

爲什麼C++沒有lib4vl,但Python綁定要求它與網絡攝像頭一起工作是一個難題,這可能是一些OpenCV知道的人可以解釋的。我很樂意聽到解釋。