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 コーデックである.また,以下のような二つの特殊な値を引数とすることもできる:
CV_FOURCC_PROMPT - ユーザが圧縮手法とパラメータを選択できるようにダイアログを開く(Win32 のみ).
CV_FOURCC_DEFAULT - 与えられたファイル拡張子に対するデフォルトの圧縮手法を利用する(Linux のみ). - 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 は,一つのフレームをビデオファイルに書き込む/追加する.