0

私は OpenCV にかなり慣れていないので、サンプル コードを見て実行することで自分の方向性をつかもうとしています。

私が見ていたサンプル プログラムの 1 つは、Web カメラ ビデオを表示するためのプログラムです。重要な行は次のとおりです (プログラムはこれ以上実行されません)。

// Make frame.
CvCapture* capture = cvCaptureFromCAM(0);

if(!capture) {
    printf("Webcam not initialized....");
}
// Display video in frame.

残念ながら、ifステートメントは常に実行されます。何らかの理由で、capture初期化されていません。

さらに奇妙なことに、プログラムを実行すると、使用する Web カメラを選択するための GUI が表示されます。

ウェブカメラ選択 GUI

しかし、ウェブカメラを選択してもcapture初期化されません!

これは何を意味するのでしょうか?これを修正するにはどうすればよいですか?

提案をありがとう。

4

1 に答える 1

1

OpenCV は、Web カメラを選択するまでアクセスできない可能性があります。その場合は、Web カメラが使用可能になるまでループしてみてください。

CvCapture *capture = NULL;
do {
    // you could also try passing in CV_CAP_ANY or -1 instead of 0
    capture = cvCaptureFromCAM(0);
} while (!capture);

それでも問題が解決しない場合は、 を呼び出しcvErrorStr(cvGetErrStatus())て、エラーを説明する文字列を取得します。

于 2012-06-15T18:57:54.067 に答える