ええと,OpenCV
ネタをちょっとだけ書いてみました.
今回は,キャプチャ→動画ファイル出力 というネタで.
まぁ,実際に用いるときには,必要に応じてこの間に画像処理のコードを追加するとよいかなと.
といっても,某コンテストでアプリのデモムービーが必要だったので作ってみたものなんですけどね.
ということで,卒研等でOpenCVを使っていて,実行結果のムービーを作りたい方には微妙に参考になるかも(注:Windows + OpenCV beta5 でしか動作確認してません).
//------------------------------------------
// 概要 : キャプチャ&動画(aviファイル)保存
// File Name : WriteVideo.cpp
// Library : OpenCV for MS-Windows beta5
// Date : Nov 22, 2005; 19:08
//------------------------------------------
#include <stdio.h>
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>
int main(int argc, char** argv)
{
int key;
CvCapture* capture = NULL;
IplImage* img = NULL;
// (a) 変数群の定義 ------------------
CvVideoWriter* VideoWriter = NULL;
char* captureWindow = "Capture";
char* filename = "test.avi"; // 出力ファイル名
double fps = 15.0; // ビデオのフレームレート
//------------------------------------
if(NULL==(capture = cvCaptureFromCAM(-1)))
{
printf("カメラが見つかりません");
return -1;
}
cvNamedWindow(captureWindow, CV_WINDOW_AUTOSIZE);
//キャプチャサイズを知るために画像取得
img = cvQueryFrame(capture);
// (b) ビデオファイル書き込みの設定 ---
VideoWriter = cvCreateVideoWriter(filename, -1 ,
fps , cvSize(img->width,img->height), 1 );
// -----------------------------------
while(1)
{
img = cvQueryFrame(capture);
// (c) ビデオファイル書き込み------------
cvWriteFrame(VideoWriter,img);
// --------------------------------------
cvShowImage(captureWindow, img);
key = cvWaitKey(1);
if (key == 0x1b)
{
break;
}
}
// (d) 後処理----------------------------
cvReleaseVideoWriter(&VideoWriter);
// --------------------------------------
cvReleaseCapture(&capture);
cvDestroyWindow(captureWindow);
return 0;
}