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を介して回避策を見つけました。後世のためにここに残します。

lib4vl( apt-get install libv4l-dev) をインストールしcmake、ビルドの段階でOpenCVを渡し-D WITH_4VL=ONます。(私はそのOFFで構築していました。)

C++ がなくても動作するlib4vlのに、Python バインディングでは Web カメラで動作する必要がある理由は謎です。おそらく、OpenCV に詳しい人なら説明できます。説明を聞きたいです。

于 2013-01-07T06:48:11.503 に答える