1

在 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(并且笔记本电脑摄像头上的灯不亮。)

知道这里可能发生了什么(以及我该如何补救)?cv.QueryFrame显示时有效.jpg,所以这似乎是相机问题。

4

1 回答 1

3

找到了一种解决方法,通过opencv+python+linux+webcam = cannot capture frames,我将留在这里以供后代使用。

install lib4vl( apt-get install libv4l-dev) 在cmake构建步骤中OpenCV,通过-D WITH_4VL=ON。(我一直在关闭它。)

为什么 C++ 没有lib4vl但 Python 绑定要求它与网络摄像头一起工作是一个谜,也许一些 OpenCV 知识渊博的人可以解释。我很想听听解释。

于 2013-01-07T06:48:11.503 回答