Python QueryFrame返回None,但C ++绑定有效

时间:2013-01-07 05:37:31

标签: python opencv

在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时有效,所以这似乎是相机问题。

1 个答案:

答案 0 :(得分:3)

通过opencv+python+linux+webcam = cannot capture frames找到了一个解决方法,我将留下来作为后人。

安装lib4vlapt-get install libv4l-dev)并在构建cmake的{​​{1}}步骤中,传递OpenCV。 (我一直在建造那个OFF。)

为什么C ++在没有-D WITH_4VL=ON的情况下工作,但Python绑定要求它与网络摄像头一起工作是一个难题,也许一些OpenCV知识渊博的人可以解释。我很乐意听到解释。