HighGUI リファレンスマニュアル
シンプルGUI(Simple GUI)
★★★
int cvNamedWindow( const char* name, int flags=CV_WINDOW_AUTOSIZE );
ウィンドウを作成する
- name
- ウィンドウの識別に用いられるウィンドウ名で、ウィンドウのタイトルバ ーに表示される。
- flags
- ウィンドウのフラグ。現在サポートされているフラグは、 CV_WINDOW_AUTOSIZE のみである。 これがセットされている場合、表示される画像サイズに合わせてウィンドウサイズが自動的に調整される。 (cvShowImage を参照)。その場合、ユーザが手動でウィンドウサイズを変更することはできない。
cvNamedWindow関数 は、画像とトラックバーのプレースホルダとして利用されるウィンドウを作成する。このウィンドウは、その名前によって参照される。
同じ名前のウィンドウが既に存在する場合は、この関数は何もしない。
使用例は、2.2 チュートリアルを参照。
★★★
void cvDestroyWindow( const char* name );
ウィンドウを破棄する
- name
- 破棄するウィンドウの名前。
cvDestroyWindow 関数は、指定された名前のウィンドウを破棄する。
★★★
void cvDestroyAllWindows( void);
全ての HighGUI ウィンドウを破棄する
cvDestroyAllWindows 関数は、オープンされている全ての HighGUI ウィ ンドウを破棄する。
★★★
void cvResizeWindow( const char* name, int width, int height );
ウィンドウサイズを設定する
- name
- リサイズするウィンドウの名前。
- width
- 新しい幅。
- height
- 新しい高さ。
cvResizeWindow 関数は、ウィンドウサイズを変更する。
★★★
void cvMoveWindow( const char* name, int x, int y );
ウィンドウの位置を変更する
- name
- 位置を変更するウィンドウの名前。
- x
- 左上のコーナーの新しい x 座標。
- y
- 左上のコーナーの新しい y 座標。
cvMoveWindow 関数は、ウィンドウの位置を変更する。
★
void* cvGetWindowHandle( const char* name );
ウィンドウの名前からウィンドウハンドルを取得する
★
const char* cvGetWindowName( void* window_handle );
ウィンドウハンドルからウィンドウの名前を取得する
★★★
void cvShowImage( const char* name, const CvArr* image );
指定したウィンドウ内に画像を表示する
- name
- ウィンドウの名前。
- image
- 表示される画像。
cvShowImage関数 は、指定したウィンドウ内に画像を表示する。 そのウィンドウのフラグに CV_WINDOW_AUTOSIZE が指定されていた場合は、 画像はオリジナルサイズで表示される。それ以外の場合、ウィンドウサイズに合わせて 表示画像サイズが変更される。
使用例は、2.2 チュートリアルを参照。
★★★
int cvCreateTrackbar( const char* trackbar_name, const char* window_name,
int* value, int count, CvTrackbarCallback on_change );
CV_EXTERN_C_FUNCPTR( void (*CvTrackbarCallback)(int pos) );
トラックバーを作成して、指定されたウィンドウに追加する
- trackbar_name
- 作成されるトラックバーの名前。
- window_name
- 作成されるトラックバーの親として用いられるウィンドウの名前。
- value
- スライダの位置を表す、整数型変数のポインタ。作成時のスライダ位置は、この変数によって定義される。
- count
- スライダの最大値。最小値は常に 0。
- on_change
- スライダの位置が変更されるたびに呼び出される関数のポインタ。 この関数のプロトタイプは、void Foo(int);となる。 コールバックが不要の場合は、NULL を指定する。
cvCreateTrackbar関数 は、 指定された名前と範囲のトラックバー(スライダ、レンジコントロールとも呼ばれる)を作成する。 この関数の引数には、トラックバーの位置に同期する変数と、トラックバーの位置変化に応じて呼び出されるコールバック関数を指定する。 作成されたトラックバーは、与えられたウィンドウの最上段に表示される。
使用例は、4.1 2値化、4.2 ヒストグラムを参照。
★★★
int cvGetTrackbarPos( const char* trackbar_name, const char* window_name );
トラックバーの位置を取得する
- trackbar_name
- トラックバーの名前。
- window_name
- トラックバーの親ウィンドウの名前。
cvGetTrackbarPos 関数は、指定されたトラックバーの現在位置を返す。
★★★
void cvSetTrackbarPos( const char* trackbar_name, const char* window_name, int pos );
トラックバーの位置を設定する
- trackbar_name
- トラックバーの名前。
- window_name
- トラックバーの親ウィンドウの名前。
- pos
- 新しい位置。
cvSetTrackbarPos 関数は、指定されたトラックバーの位置を設定する。
★★★
#define CV_EVENT_MOUSEMOVE 0
#define CV_EVENT_LBUTTONDOWN 1
#define CV_EVENT_RBUTTONDOWN 2
#define CV_EVENT_MBUTTONDOWN 3
#define CV_EVENT_LBUTTONUP 4
#define CV_EVENT_RBUTTONUP 5
#define CV_EVENT_MBUTTONUP 6
#define CV_EVENT_LBUTTONDBLCLK 7
#define CV_EVENT_RBUTTONDBLCLK 8
#define CV_EVENT_MBUTTONDBLCLK 9
#define CV_EVENT_FLAG_LBUTTON 1
#define CV_EVENT_FLAG_RBUTTON 2
#define CV_EVENT_FLAG_MBUTTON 4
#define CV_EVENT_FLAG_CTRLKEY 8
#define CV_EVENT_FLAG_SHIFTKEY 16
#define CV_EVENT_FLAG_ALTKEY 32
CV_EXTERN_C_FUNCPTR( void (*CvMouseCallback )(int event, int x, int y, int flags, void* param) );
void cvSetMouseCallback( const char* window_name, CvMouseCallback on_mouse, void* param=NULL );
マウスイベントに対するコールバックを指定する
★★★
int cvWaitKey( int delay=0 );
キーが押されるまで待機する
- delay
- 遅延時間(ミリ秒)。
cvWaitKey 関数は、無限に(delay<=0)、あるいは 「delay」ミリ秒だけ、キーイベントを待つ。 キーが押された場合はそのキーコードを、キーが押されないまま指定されたタイムアウト時間が過ぎてしまった場合は -1 が返される。
注釈: この関数は、HighGUI においてイベントを取得して扱うための唯一の手段である。 よって、環境がイベント処理を扱ってくれる場合を除けば、通常のイベント処理ではこの関数を周期的に呼び出す必要がある。
画像の読み込みと保存(Loading and Saving Images)
★★★
IplImage* cvLoadImage( const char* filename, int flags=CV_LOAD_IMAGE_COLOR );
/* 8 ビット,カラーまたはグレースケール.- 将来廃止される予定なので,CV_LOAD_IMAGE_ANYCOLOR を使用すること */
#define CV_LOAD_IMAGE_UNCHANGED -1
/* 8 ビット,グレースケール */
#define CV_LOAD_IMAGE_GRAYSCALE 0
/* CV_LOAD_IMAGE_ANYDEPTH と併用されない限り 8 ビット,カラー */
#define CV_LOAD_IMAGE_COLOR 1
/* 任意のデプス,グレー */
#define CV_LOAD_IMAGE_ANYDEPTH 2
/* CV_LOAD_IMAGE_UNCHANGED と同等.
ただし,CV_LOAD_IMAGE_ANYDEPTH と併用可能 */
#define CV_LOAD_IMAGE_ANYCOLOR 4
ファイルから画像を読み込む
- filename
- 読み込むファイル名。
- flags
- 読み込む画像がカラー/グレースケールのどちらか、とデプスを指定する。
カラー/グレースケールの指定は、読み込まれた画像を 3 チャンネル(CV_LOAD_IMAGE_COLOR)に変換するか、
1チャンネル(CV_LOAD_IMAGE_GRAYSCALE)に変換するか、あるいは入力画像(CV_LOAD_IMAGE_ANYCOLOR)のままにしておくかを決める。
デプスの指定は、読み込まれた画像を、以前のバージョンの OpenCV で行われたように一つのカラーチャンネルに対して 8ビットに変換するか、入力画像のままにしておくかを決める。CV_LOAD_IMAGE_ANYDEPTH が渡された場合に取りうるピクセルフォーマットは、 8 ビット符号無し整数、16 ビット符号無し整数、32 ビット符号付き整数、32 ビット浮動小数点数である。
渡されたフラグが衝突する場合、小さい値を持つフラグが優先される。 例えば、 CV_LOAD_IMAGE_COLOR | CV_LOAD_IMAGE_ANYCOLOR というフラグの場合は、 画像は 3 チャンネルとして読み込まれる。 CV_LOAD_IMAGE_ANYCOLOR は、CV_LOAD_IMAGE_UNCHANGED と等価であるが、 CV_LOAD_IMAGE_ANYCOLOR には、CV_LOAD_IMAGE_ANYDEPTH と併用できるという利点がある。 よって、CV_LOAD_IMAGE_UNCHANGEDは今後利用すべきではない。
出来る限り忠実に画像を読み込みたい場合は、 CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR を指定する。
cvLoadImage関数 は、指定されたファイルから画像を読み込み、その画像のポインタを返す。 現在サポートしているファイルフォーマットは次のようになる。
- Windows bitmaps - BMP, DIB;
- JPEG files - JPEG, JPG, JPE;
- Portable Network Graphics - PNG;
- Portable image format - PBM, PGM, PPM;
- Sun rasters - SR, RAS;
- TIFF files - TIFF, TIF;
- OpenEXR HDR images - EXR;
- JPEG 2000 images - jp2.
使用例は、2.2 チュートリアルを参照。
★★★
int cvSaveImage( const char* filename, const CvArr* image );
画像をファイルに保存する
- filename
- ファイル名。
- image
- 保存する画像。
関数 cvSaveImage は、画像を指定したファイルに保存する。 画像フォーマットは、filename の拡張子により決定される(cvLoadImage を参照)。 この関数で保存できるのは、8 ビット 1チャンネル、あるいは 8 ビット3 チャンネル('BGR' の順)画像だけである。 フォーマットやデプス、チャンネルの順序などが異なる場合は、保存する前に cvCvtScale と cvCvtColor を使って画像を変換するか、あるいは汎用的な関数 cvSave を利用して XML/YAML フォーマットで保存すること。
使用例は、2.2 チュートリアルを参照。
ビデオ入出力(Video I/O)
★★★
typedef struct CvCapture CvCapture;
ビデオキャプチャ構造体
CvCapture 構造体は、パブリックインタフェースを持たず、ビデオキャプチャ関数のパラメータとしてのみ使われる。
★★★
CvCapture* cvCreateFileCapture( const char* filename );
ファイルからのビデオキャプチャを初期化する
- filename
- ビデオファイル名。
cvCreateFileCapture 関数は、 指定されたファイルからビデオストリームを読み込むために CvCapture 構造体を確保して初期化する。
確保された構造体が使用されなくなったときには、 cvReleaseCapture 関数によって解放されるべきである。
★★★
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 を用いる。
使用例は、2.2 チュートリアルを参照。
★
void cvReleaseCapture( CvCapture** capture );
CvCapture 構造体を解放する
使用例は、2.2 チュートリアルを参照。
★★★
int cvGrabFrame( CvCapture* capture );
カメラやファイルからフレームを取り出す
- capture
- ビデオキャプチャ構造体。
cvGrabFrame 関数は、カメラやファイルからフレームを取り出す。 取り出されたフレームは内部的に保存される。 この関数の目的は、高速にフレームを取り出すことである。 これは複数台のカメラから同時に読み込むような場合に、カメラ間の同期のために重要となる。 取り出されたフレームは、(カメラ/ドライバによって定義された)圧縮フォーマット の形で保存されるので、これらがそのまま公開されることはない。 取り出されたフレームをユーザ側で利用するためには、cvRetrieveFrame を用いるべきである。
★★★
IplImage* cvRetrieveFrame( CvCapture* capture );
cvGrabFrame によって取り出された画像を取得する
- capture
- ビデオキャプチャ構造体。
cvRetrieveFrame 関数は、 cvGrabFrame 関数によって取り出された画像へのポインタを返す。返された画像は、ユーザが解放したり、変更したりするべきではない。
★★★
IplImage* cvQueryFrame( CvCapture* capture );
カメラやファイルから一つのフレームを取り出して返す
- capture
- ビデオキャプチャ構造体。
cvQueryFrame関数 は、カメラやビデオファイルから一つのフレームを取り出し、それを展開して返す。 この関数は、単純にcvGrabFrame とcvRetrieveFrame をまとめて呼び出しているだけである。返された画像は、ユーザが解放したり、変更したりするべきではない。
使用例は、2.2 チュートリアルを参照。
★★★
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 関数は、カメラやビデオファイルの指定されたプロパティを読み出す。
★★★
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
★
typedef struct CvVideoWriter CvVideoWriter;
CvVideoWriter* cvCreateVideoWriter( const char* filename, int fourcc, double fps, CvSize frame_size, int is_color=1 );
ビデオライタを作成する
★
void cvReleaseVideoWriter( CvVideoWriter** writer );
ビデオライタを解放する
★
int cvWriteFrame( CvVideoWriter* writer, const IplImage* image );
フレームをビデオファイルに書き込む
その他の関数とシステム関数(Utility and System Functions)
★
int cvInitSystem( int argc, char** argv );
HighGUI を初期化する
★
void cvConvertImage( const CvArr* src, CvArr* dst, int flags=0 );
画像を必要に応じて変換する