基本的に、ビデオカメラからビデオをキャプチャし、フレームでいくつかの処理を行う必要があり、フレームごとに検出の長方形を表示します。
例: http://www.youtube.com/watch?v=aYd2kAN0Y20
この長方形をビデオカメラ (usb) の出力にどのように重ねますか? (c++)
基本的に、ビデオカメラからビデオをキャプチャし、フレームでいくつかの処理を行う必要があり、フレームごとに検出の長方形を表示します。
例: http://www.youtube.com/watch?v=aYd2kAN0Y20
この長方形をビデオカメラ (usb) の出力にどのように重ねますか? (c++)
オープンソースのイメージングライブラリである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
から。CvCapture
capture
この場合、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
乾杯!