ユーザインタフェース ============================== .. highlight:: c .. index:: ConvertImage .. _ConvertImage: ConvertImage ------------ `id=0.662888178543 Comments from the Wiki `__ .. cfunction:: void cvConvertImage( const CvArr* src, CvArr* dst, int flags=0 ) 画像を(必要ならば垂直方向に反転して)変換します. :param src: 入力画像. :param dst: 出力画像. シングルチャンネル,あるいは3チャンネルの8ビット画像. :param flags: 処理フラグ: * **CV_CVTIMG_FLIP** 画像を垂直方向に反転します. * **CV_CVTIMG_SWAP_RB** 赤と青のチャンネルを入れ替えます.OpenCV では,カラー画像のチャンネルは ``BGR`` の順番で並んでいますが,画像を表示する前にこの順番をを反転させる必要があるシステムもあります(関数 :ref:`ShowImage` はこれを自動的に行います). 関数 ``cvConvertImage`` は,画像の変換と必要に応じた垂直反転を行います.この関数は, :ref:`ShowImage` で利用されます. .. index:: CreateTrackbar .. _CreateTrackbar: CreateTrackbar -------------- `id=0.18679988344 Comments from the Wiki `__ .. cfunction:: int cvCreateTrackbar( const char* trackbarName, const char* windowName, int* value, int count, CvTrackbarCallback onChange ) トラックバーを作成し,指定されたウィンドウに追加します. :param trackbarName: 作成されるトラックバーの名前. :param windowName: 作成されるトラックバーの親として利用されるウィンドウの名前. :param value: 整数値変数へのポインタ.その変数値はスライダ位置を反映します.また,作成時のスライダ位置は,この値によって決まります. :param count: スライダ位置の最大値.最小値は常に0です. :param onChange: スライダの位置が変更される度に呼び出される関数へのポインタ. この関数は, ``void Foo(int);`` という形式ですが,コールバック関数が不要な場合は NULL でも構いません. 関数 ``cvCreateTrackbar`` は,指定された名前と可動範囲をもつトラックバー(スライダ,レンジコントロールとも呼ばれます)を作成します.この関数の引数には,トラックバーの位置に同期する変数と,トラックバーの位置変化に応じて呼び出されるコールバック関数を指定します.作成されたトラックバーは,指定されたウィンドウの最上段に表示されます. **[Qt バックエンドのみ]** Qt 固有機能の詳細: * **windowName** トラックバーの親として利用されるウィンドウの名前.トラックバーがコントロールパネル上に追加される場合は,NULL を指定できます. *windowName* が正しく与えられた場合,作成されたトラックバーはウィンドウ の下部に表示されます.あるいは, *windowName* が NULL であれば,コントロールパネル上に表示されます. トラックバーのラベルをクリックすると,トラックバーの値を直接編集することができます. .. code-block:: c CV_EXTERN_C_FUNCPTR( void (*CvTrackbarCallback)(int pos) ); .. .. index:: DestroyAllWindows .. _DestroyAllWindows: DestroyAllWindows ----------------- `id=0.576255828141 Comments from the Wiki `__ .. cfunction:: void cvDestroyAllWindows(void) すべてのHighGUIウィンドウを破棄します. 関数 ``cvDestroyAllWindows`` は,オープンされているHighGUIウィンドウをすべて破棄します. .. index:: DestroyWindow .. _DestroyWindow: DestroyWindow ------------- `id=0.546980414794 Comments from the Wiki `__ .. cfunction:: void cvDestroyWindow( const char* name ) ウィンドウを破棄します. :param name: 破棄されるウィンドウの名前. 関数 ``cvDestroyWindow`` は,指定された名前のウィンドウを破棄します. .. index:: GetTrackbarPos .. _GetTrackbarPos: GetTrackbarPos -------------- `id=0.123895211263 Comments from the Wiki `__ .. cfunction:: int cvGetTrackbarPos( const char* trackbarName, const char* windowName ) トラックバーの位置を取得します. :param trackbarName: トラックバーの名前. :param windowName: トラックバーの親ウィンドウの名前. 関数 ``cvGetTrackbarPos`` は,指定されたトラックバーの現在位置を返します. **[Qt バックエンドのみ]** Qt 固有機能の詳細: * **windowName** トラックバーの親として利用されるウィンドウの名前.トラックバーがコントロールパネル上に追加される場合は,NULL を指定できます. .. index:: GetWindowHandle .. _GetWindowHandle: GetWindowHandle --------------- `id=0.474068436709 Comments from the Wiki `__ .. cfunction:: void* cvGetWindowHandle( const char* name ) ウィンドウの名前からウィンドウハンドルを取得します. :param name: ウィンドウの名前. 関数 ``cvGetWindowHandle`` は,ネイティブなウィンドウハンドル(Win32の場合はHWND,GTK+の場合はGtkWidget)を返します. **[Qt バックエンドのみ]** Qt 固有機能の詳細: 関数 ``cvGetWindowHandle`` は,Qt クラスの QWidget を継承した ネイティブなウィンドウハンドルを返します. .. index:: GetWindowName .. _GetWindowName: GetWindowName ------------- `id=0.0930295136724 Comments from the Wiki `__ .. cfunction:: const char* cvGetWindowName( void* windowHandle ) ウィンドウハンドルからウィンドウの名前を取得します. :param windowHandle: ウィンドウハンドル. 関数 ``cvGetWindowName`` は,引数で与えられたネイティブなウィンドウハンドル(Win32の場合はHWND,GTK+の場合はGtkWidget)が示すウィンドウの名前を返します. **[Qt バックエンドのみ]** Qt 固有機能の詳細: 関数 ``cvGetWindowName`` は,ネイティブなウィンドウハンドル(QWidget)が与えられると,そのウィンドウの名前を返します. .. index:: InitSystem .. _InitSystem: InitSystem ---------- `id=0.856495366392 Comments from the Wiki `__ .. cfunction:: int cvInitSystem( int argc, char** argv ) HighGUIを初期化します. :param argc: コマンドライン引数の数. :param argv: コマンドライン引数の配列. 関数 ``cvInitSystem`` は,HighGUI を初期化します.最初のウィンドウを作成するよりも前に,ユーザによってこの関数が明示的に呼ばれなかった場合は, ``argc=0`` , ``argv=NULL`` として,この関数が暗に呼ばれたことになります.Win32 環境では,これを明示的に呼び出す必要はありません.X Window 環境では,HighGUI ウィンドウやコントロールの見た目を変更するために,この引数を利用する可能性もあります. **[Qt バックエンドのみ]** Qt 固有機能の詳細: 関数 ``cvInitSystem`` は,cvNamedWindow が最初に呼び出されたときに自動的に呼び出されます. .. index:: MoveWindow .. _MoveWindow: MoveWindow ---------- `id=0.212715183112 Comments from the Wiki `__ .. cfunction:: void cvMoveWindow( const char* name, int x, int y ) ウィンドウの位置を変更します. :param name: 移動されるウィンドウの名前. :param x: 左上コーナーの移動後の x-座標. :param y: 左上コーナーの移動後の y-座標. 関数 ``cvMoveWindow`` は,ウィンドウの位置を変更します. .. index:: NamedWindow .. _NamedWindow: NamedWindow ----------- `id=0.128331186999 Comments from the Wiki `__ .. cfunction:: int cvNamedWindow( const char* name, int flags ) ウィンドウを作成します. :param name: ウィンドウの識別に用いられるウィンドウ名で,ウィンドウのタイトルバーに表示されます. :param flags: ウィンドウのフラグ.現在サポートされているフラグは ``CV_WINDOW_AUTOSIZE`` のみです.このフラグがセットされていると,表示される画像サイズに合わせてウィンドウサイズが自動的に調整されます( :ref:`ShowImage` を参照してください).その場合,ユーザが手動でウィンドウサイズを変更することはできません. 関数 ``cvNamedWindow`` は,画像とトラックバーのプレースホルダとして利用されるウィンドウを作成します.このウィンドウは,その名前によって参照されます. 同じ名前のウィンドウが既に存在する場合は,この関数は何もしません. **[Qt バックエンドのみ]** Qt 固有機能の詳細: * **flags** ウィンドウのフラグ.現在サポートされるフラグは以下のとおりです: * **CV_WINDOW_NORMAL or CV_WINDOW_AUTOSIZE:** ``CV_WINDOW_NORMAL`` を指定すると,ユーザがウィンドウサイズを変更できるようになります.逆に ``CV_WINDOW_AUTOSIZE`` を指定すると,表示画像( :ref:`ShowImage` を参照してください)にフィットする様にウィンドウサイズが自動的に調整され,ユーザはウィンドウサイズを変更することができなくなります. * **CV_WINDOW_FREERATIO or CV_WINDOW_KEEPRATIO:** ``CV_WINDOW_FREERATIO`` を指定すると,アスペクト比を保たずに画像サイズが調整され,逆に ``CV_WINDOW_KEEPRATIO`` を指定すると,アスペクト比を保つように調整されます. * **CV_GUI_NORMAL or CV_GUI_EXPANDED:** ``CV_GUI_NORMAL`` を指定すると,ステータスバーとツールバーのない以前のウィンドウを表示することができます.逆に ``CV_GUI_EXPANDED`` を指定すると,機能強化された新しいGUIが表示されます. このパラメータはオプションです.新たにウィンドウを作成する場合のデフォルトのフラグは, ``CV_WINDOW_AUTOSIZE`` , ``CV_WINDOW_KEEPRATIO`` , ``CV_GUI_EXPANDED`` です. フラグを変更したい場合は, OR 演算子でこれらを組み合わせることができます.以下に例を示します: .. code-block:: c cvNamedWindow( "myWindow", ``CV_WINDOW_NORMAL`` | ``CV_GUI_NORMAL`` ); .. .. index:: ResizeWindow .. _ResizeWindow: ResizeWindow ------------ `id=0.484105312409 Comments from the Wiki `__ .. cfunction:: void cvResizeWindow( const char* name, int width, int height ) ウィンドウサイズを変更します. :param name: リサイズされるウィンドウの名前. :param width: 新しい幅. :param height: 新しい高さ. 関数 ``cvResizeWindow`` は,ウィンドウサイズを変更します. .. index:: SetMouseCallback .. _SetMouseCallback: SetMouseCallback ---------------- `id=0.987672490025 Comments from the Wiki `__ .. cfunction:: void cvSetMouseCallback( const char* windowName, CvMouseCallback onMouse, void* param=NULL ) マウスイベントに対してコールバックを割り当てます. :param windowName: ウィンドウの名前. :param onMouse: 指定ウィンドウ内でマウスイベントが発生する度に呼び出される関数へのポインタ.この関数は ``void Foo(int event, int x, int y, int flags, void* param);`` という形式でなければいけません.ここで ``event`` は, ``CV_EVENT_*`` の内の1つで, ``x`` と ``y`` は(ウィンドウ座標系ではなく)画像座標系におけるマウスポインタの座標, ``flags`` は ``CV_EVENT_FLAG_*`` の論理和です.また, ``param`` は, ``cvSetMouseCallback`` 関数呼び出しの際に渡されるユーザ定義パラメータです. :param param: コールバック関数に渡される,ユーザ定義パラメータ. 関数 ``cvSetMouseCallback`` は,指定ウィンドウ内で発生するマウスイベントに対するコールバック関数を設定します. ``event`` パラメータは,以下の内の1つです: * **CV_EVENT_MOUSEMOVE** マウスが移動した * **CV_EVENT_LBUTTONDOWN** 左ボタンが押された * **CV_EVENT_RBUTTONDOWN** 右ボタンが押された * **CV_EVENT_MBUTTONDOWN** 中ボタンが押された * **CV_EVENT_LBUTTONUP** 左ボタンが離された * **CV_EVENT_RBUTTONUP** 右ボタンが離された * **CV_EVENT_MBUTTONUP** 中ボタンが離された * **CV_EVENT_LBUTTONDBLCLK** 左ボタンがダブルクリックされた * **CV_EVENT_RBUTTONDBLCLK** 右ボタンがダブルクリックされた * **CV_EVENT_MBUTTONDBLCLK** 中ボタンがダブルクリックされた ``flags`` パラメータは,以下の内の1つです: * **CV_EVENT_FLAG_LBUTTON** 左ボタンが押されている * **CV_EVENT_FLAG_RBUTTON** 右ボタンが押されている * **CV_EVENT_FLAG_MBUTTON** 中ボタンが押されている * **CV_EVENT_FLAG_CTRLKEY** Ctrl キーが押されている * **CV_EVENT_FLAG_SHIFTKEY** Shift キーが押されている * **CV_EVENT_FLAG_ALTKEY** Alt キーが押されている .. index:: SetTrackbarPos .. _SetTrackbarPos: SetTrackbarPos -------------- `id=0.0376561880005 Comments from the Wiki `__ .. cfunction:: void cvSetTrackbarPos( const char* trackbarName, const char* windowName, int pos ) トラックバーの位置をセットします. :param trackbarName: トラックバーの名前. :param windowName: トラックバーの親ウィンドウの名前. :param pos: トラックバーの新しい位置. 関数 ``cvSetTrackbarPos`` は,指定されたトラックバーの位置をセットします. **[Qt バックエンドのみ]** Qt 固有機能の詳細: * **windowName** トラックバーの親ウィンドウの名前.トラックバーがコントロールパネル上に配置されている場合は,NULL を指定できます. .. index:: ShowImage .. _ShowImage: ShowImage --------- `id=0.205818481258 Comments from the Wiki `__ .. cfunction:: void cvShowImage( const char* name, const CvArr* image ) 指定されたウィンドウ内に画像を表示します. :param name: ウィンドウの名前. :param image: 表示される画像. 関数 ``cvShowImage`` は,指定されたウィンドウ内に画像を表示します.もし,ウィンドウ作成時にフラグ ``CV_WINDOW_AUTOSIZE`` が指定されていれば,画像は元来のサイズで表示されます.そうでなければ,ウィンドウサイズに合わせて表示画像サイズが変更されます.この関数は,画像のビット深度によっては,それを変更する可能性があります: * 符号なし8ビットである場合,そのまま表示されます. * 符号なし16ビット,あるいは32ビットの整数である場合,ピクセル値を256で割ります.つまり, [0,255*256] の範囲が [0,255] にマッピングされます. * 32ビット浮動小数点数である場合は,ピクセル値に255をかけます.つまり,[0,1] の範囲が [0,255] にマッピングされます. .. index:: WaitKey .. _WaitKey: WaitKey ------- `id=0.500634828114 Comments from the Wiki `__ .. cfunction:: int cvWaitKey( int delay=0 ) キーが押されるまで待機します. :param delay: ミリ秒単位で表される遅延時間. 関数 ``cvWaitKey`` は,無限に( :math:`\texttt{delay} <= 0` ),あるいは ``delay`` ミリ秒だけキーイベントを待ちます.キーが押された場合はそのキーコードが,キーが押されないまま指定されたタイムアウト時間が過ぎてしまった場合は -1 が返されます. **注意:** この関数は,HighGUI においてイベントを取得して扱うための唯一の手段です.よって,実行環境がイベント処理を扱ってくれる場合を除けば,通常のイベント処理ではこの関数を周期的に呼び出す必要があります. **[Qt バックエンドのみ]** Qt 固有機能の詳細: 現在の Qt の実装では,これが,ウィンドウの再描画 ldots などのイベントを処理する唯一の方法です.