1

基本的に、ビデオカメラからビデオをキャプチャし、フレームでいくつかの処理を行う必要があり、フレームごとに検出の長方形を表示します。

例: http://www.youtube.com/watch?v=aYd2kAN0Y20

この長方形をビデオカメラ (usb) の出力にどのように重ねますか? (c++)

4

1 に答える 1

3

オープンソースのイメージングライブラリであるOpenCVを使用して、Webカメラ/ビデオファイルから入力を取得します。インストール方法のチュートリアルは次のとおりです。

http://opensourcecollection.blogspot.com.es/2011/04/how-to-setup-opencv-22-in-codeblocks.html

次に、このコードを使用します。

CvCapture *capture = cvCreateCameraCapture(-1);
IplImage* frame = cvQueryFrame(capture);

画像を取得するには、、frameから。CvCapturecapture

この場合、captureはビデオカメラから直接取得されますが、次のコマンドを使用してビデオファイルから作成することもできます。 CvCapture *capture = cvCreateFileCapture("filename.avi");

次に、ここで定義された関数を使用して画像を描画します:http: //opencv.willowgarage.com/documentation/drawing_functions.html

ちなみに、Youtubeビデオの形は長方形ではありません。平行四辺形です。


ライブで実行したい場合は、基本的にこれをループに入れ、フレームを取得して処理し、描画してから、次のように画像を出力できます。

ループの前にこれを含めます。 cvNamedWindow("Capture", CV_WINDOW_AUTOSIZE);

そして、あなたのループでは、あなたはこれを言うでしょう: cvShowImage("Capture", frame);

処理後。


編集C++でこれを行うには、次のようにWebカメラを開きます。

VideoCapture cap(0); // open the default camera
if(!cap.isOpened())  // check if we succeeded
    return -1;

ファイルから初期化するには、カメラインデックスを入力する代わりに、ファイルパスを入力します。

次のようにカメラからフレームを取得します。

 Mat frame;
 cap >> frame; // get a new frame from camera

次に、ここで描画関数を見つけることができます:http: //opencv.willowgarage.com/documentation/cpp/core_drawing_functions.html

乾杯!

于 2012-06-19T09:37:12.157 に答える