在Ubuntu 10.04上的OpenCV 2.3.1(从源代码构建)中,C ++片段
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
(并且笔记本电脑相机上的指示灯不亮。)
知道这里可能会发生什么(以及我如何解决它)? <{1}}显示cv.QueryFrame
时有效,所以这似乎是相机问题。
答案 0 :(得分:3)
通过opencv+python+linux+webcam = cannot capture frames找到了一个解决方法,我将留下来作为后人。
安装lib4vl
(apt-get install libv4l-dev
)并在构建cmake
的{{1}}步骤中,传递OpenCV
。 (我一直在建造那个OFF。)
为什么C ++在没有-D WITH_4VL=ON
的情况下工作,但Python绑定要求它与网络摄像头一起工作是一个难题,也许一些OpenCV知识渊博的人可以解释。我很乐意听到解释。