HighGUI リファレンス マニュアル
- シンプルGUI(Simple GUI)
- 画像の読み込みと保存(Loading and Saving Images)
- ビデオ入出力(Video I/O)
- その他の関数とシステム関数(Utility and System Functions)
ビデオ入出力(Video I/O)
CvCapture
ビデオキャプチャ構造体
typedef struct CvCapture CvCapture;
構造体 CvCapture は,パブリックインタフェースを持たず,ビデオキャプチャ関数のパラメータとしてのみ使われる.
cvCreateFileCapture
ファイルからのビデオキャプチャを初期化する
CvCapture* cvCreateFileCapture( const char* filename );
- filename
- ビデオファイル名.
関数 cvCreateFileCapture は, 指定されたファイルからビデオストリームを読み込むために CvCapture 構造体を確保して初期化する.
確保された構造体が使用されなくなったときには,関数 cvReleaseCaptureによって解放されるべきである.
cvCreateCameraCapture
カメラからのビデオキャプチャを初期化する
CvCapture* cvCreateCameraCapture( int index );
- index
- 使われるカメラのインデックス. 使用するカメラが1台のとき,あるいは,何台のカメラを使うかが重要でないときは,-1 でも問題ない場合もある.
関数 cvCreateCameraCapture は, カメラからビデオストリームを読み込むために,CvCapture 構造体を確保して初期化する. Windows では,次の二つのカメラインタフェースが利用できる:Video for Windows(VFW),Matrox Imaging Library(MIL). Linux では,次の二つカメラインタフェースが利用できる:Video for Linux(V4L),FireWire(IEEE1394).
構造体を解放するためには,cvReleaseCapture を用いる.
cvReleaseCapture
CvCapture 構造体を解放する
void cvReleaseCapture( CvCapture** capture );
- capture
- ビデオキャプチャ構造体へのポインタ.
関数 cvReleaseCapture は, cvCreateFileCapture あるいは,cvCreateCameraCapture によって確保された CvCapture 構造体を解放する.
cvGrabFrame
カメラやファイルからフレームを取り出す
int cvGrabFrame( CvCapture* capture );
- capture
- ビデオキャプチャ構造体.
関数 cvGrabFrame は,カメラやファイルからフレームを取り出す. 取り出されたフレームは内部的に保存される. この関数の目的は,高速にフレームを取り出すことである. これは複数台のカメラから同時に読み込むような場合に,カメラ間の同期のために重要となる. 取り出されたフレームは,(カメラ/ドライバによって定義された)圧縮フォーマット の形で保存されるので,これらがそのまま公開されることはない. 取り出されたフレームをユーザ側で利用するためには,cvRetrieveFrame を用いるべきである.
cvRetrieveFrame
cvGrabFrame によって取り出された画像を取得する
IplImage* cvRetrieveFrame( CvCapture* capture );
- capture
- ビデオキャプチャ構造体.
関数 cvRetrieveFrame は, cvGrabFrame 関数によって取り出された画像へのポインタを返す.返された画像は,ユーザが解放したり,変更したりするべきではない.
cvQueryFrame
カメラやファイルから一つのフレームを取り出して返す
IplImage* cvQueryFrame( CvCapture* capture );
- capture
- ビデオキャプチャ構造体.
関数 cvQueryFrame は,カメラやビデオファイルから一つのフレームを取り出し,それを展開して返す. この関数は,単純にcvGrabFrame とcvRetrieveFrame をまとめて呼び出しているだけである.返された画像は,ユーザが解放したり,変更したりするべきではない.
cvGetCaptureProperty
ビデオキャプチャのプロパティを取得する
double cvGetCaptureProperty( CvCapture* capture, int property_id );
- capture
- ビデオキャプチャ構造体.
- property_id
- プロパティID.次のいずれか一つである.
CV_CAP_PROP_POS_MSEC - ファイル中の現在の位置(ミリ秒単位),あるいはビデオキャプチャのタイムスタンプ値
CV_CAP_PROP_POS_FRAMES - 次にデコード/キャプチャされるフレームのインデックス.0 から始まる
CV_CAP_PROP_POS_AVI_RATIO - ビデオファイル内の相対的な位置(0 - ファイルの開始位置, 1 - ファイルの終了位置)
CV_CAP_PROP_FRAME_WIDTH - ビデオストリーム中のフレームの幅
CV_CAP_PROP_FRAME_HEIGHT - ビデオストリーム中のフレームの高さ
CV_CAP_PROP_FPS - フレームレート
CV_CAP_PROP_FOURCC - コーデックを表す 4 文字
CV_CAP_PROP_FRAME_COUNT - ビデオファイル中のフレーム数
関数 cvGetCaptureProperty は,カメラやビデオファイルの指定されたプロパティを読み出す.
cvSetCaptureProperty
ビデオキャプチャのプロパティをセットする
int cvSetCaptureProperty( CvCapture* capture, int property_id, double value );
- capture
- ビデオキャプチャ構造体.
- property_id
- プロパティID.次のいずれか一つである.
CV_CAP_PROP_POS_MSEC - ファイル先頭からの位置(ミリ秒単位)
CV_CAP_PROP_POS_FRAMES - フレーム単位での位置(ビデオファイルのみ)
CV_CAP_PROP_POS_AVI_RATIO - 相対的な位置(0 - ファイルの最初,1 - ファイルの最後)
CV_CAP_PROP_FRAME_WIDTH - ビデオストリーム中のフレームの幅(カメラのみ)
CV_CAP_PROP_FRAME_HEIGHT - ビデオストリーム中のフレームの高さ(カメラのみ)
CV_CAP_PROP_FPS - フレームレート(カメラのみ)
CV_CAP_PROP_FOURCC - コーデックを表す 4 文字(カメラのみ) - value
- プロパティの値.
関数 cvSetCaptureProperty は,ビデオキャプチャの指定されたプロパティに値をセットする. 現在,この関数は,ビデオファイルのみをサポートしている: CV_CAP_PROP_POS_MSEC, CV_CAP_PROP_POS_FRAMES, CV_CAP_PROP_POS_AVI_RATIO
cvCreateVideoWriter
ビデオライタを作成する
typedef struct CvVideoWriter CvVideoWriter;
CvVideoWriter* cvCreateVideoWriter( const char* filename, int fourcc, double fps,
CvSize frame_size, int is_color=1 );
- filename
- 出力するビデオファイルの名前.
- fourcc
- フレームを圧縮するためのコーデックを表す 4 文字.例えば, CV_FOURCC('P','I','M','1') は,MPEG-1 コーデック, CV_FOURCC('M','J','P','G') は,motion-jpeg コーデックである. Win32 環境下では,-1 を渡すとダイアログから圧縮方法と圧縮のパラメータを選択できるようになる.
- fps
- 作成されたビデオストリームのフレームレート.
- frame_size
- ビデオフレームのサイズ.
- is_color
- 0 でない場合は,エンコーダはカラーフレームとしてエンコードする . そうでない場合は,グレースケールフレームとして動作する(現在のところ,このフラグは Windows でのみ利用できる).
関数 cvCreateVideoWriter は,ビデオライタ構造体を作成する.
cvReleaseVideoWriter
ビデオライタを解放する
void cvReleaseVideoWriter( CvVideoWriter** writer );
- writer
- ビデオライタ構造体へのポインタ.
関数 cvReleaseVideoWriter は,ビデオファイルへの書き込みを終了し,構造体を解放する.
cvWriteFrame
フレームをビデオファイルに書き込む
int cvWriteFrame( CvVideoWriter* writer, const IplImage* image );
- writer
- ビデオライタ構造体.
- image
- 書き込まれるフレーム.
関数 cvWriteFrame は,一つのフレームをビデオファイルに書き込む/追加する.