ユーザインタフェース ============================== .. highlight:: c .. index:: ConvertImage cv::ConvertImage ---------------- .. 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 cv::CreateTrackbar ------------------ .. 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`` は,指定された名前と可動範囲をもつトラックバー(スライダ,レンジコントロールとも呼ばれます)を作成します.この関数の引数には,トラックバーの位置に同期する変数と,トラックバーの位置変化に応じて呼び出されるコールバック関数を指定します.作成されたトラックバーは,指定されたウィンドウの最上段に表示されます. :: CV_EXTERN_C_FUNCPTR( void (*CvTrackbarCallback)(int pos) ); .. .. index:: DestroyAllWindows cv::DestroyAllWindows --------------------- .. cfunction:: void cvDestroyAllWindows(void) 全てのHighGUIウィンドウを破棄します. 関数 ``cvDestroyAllWindows`` は,オープンされている全てのHighGUIウィンドウを破棄します. .. index:: DestroyWindow cv::DestroyWindow ----------------- .. cfunction:: void cvDestroyWindow( const char* name ) ウィンドウを破棄します. :param name: 破棄されるウィンドウの名前 関数 ``cvDestroyWindow`` は,指定された名前のウィンドウを破棄します. .. index:: GetTrackbarPos cv::GetTrackbarPos ------------------ .. cfunction:: int cvGetTrackbarPos( const char* trackbarName, const char* windowName ) トラックバーの位置を取得します. :param trackbarName: トラックバーの名前 :param windowName: トラックバーの親ウィンドウの名前 関数 ``cvGetTrackbarPos`` は,指定されたトラックバーの現在位置を返します. .. index:: GetWindowHandle cv::GetWindowHandle ------------------- .. cfunction:: void* cvGetWindowHandle( const char* name ) ウィンドウの名前からウィンドウハンドルを取得します. :param name: ウィンドウの名前 関数 ``cvGetWindowHandle`` は,ネイティブなウィンドウハンドル(Win32の場合はHWND,GTK+の場合はGtkWidget)を返します. .. index:: GetWindowName cv::GetWindowName ----------------- .. cfunction:: const char* cvGetWindowName( void* windowHandle ) ウィンドウハンドルからウィンドウの名前を取得します. :param windowHandle: ウィンドウハンドル 関数 ``cvGetWindowName`` は,引数で与えられたネイティブなウィンドウハンドル(Win32の場合はHWND,GTK+の場合はGtkWidget)が示すウィンドウの名前を返します. .. index:: InitSystem cv::InitSystem -------------- .. cfunction:: int cvInitSystem( int argc, char** argv ) HighGUIを初期化します. :param argc: コマンドライン引数の数 :param argv: コマンドライン引数の配列 関数 ``cvInitSystem`` は,HighGUI を初期化します.最初のウィンドウを作成するよりも前に,ユーザによってこの関数が明示的に呼ばれなかった場合は, ``argc=0`` , ``argv=NULL`` として,この関数が暗に呼ばれたことになります.Win32 環境では,これを明示的に呼び出す必要はありません.X Window 環境では,HighGUI ウィンドウやコントロールの見た目を変更するために,この引数を利用する可能性もあります. .. index:: MoveWindow cv::MoveWindow -------------- .. cfunction:: void cvMoveWindow( const char* name, int x, int y ) ウィンドウの位置を変更します. :param name: Name of the window to be moved. :param x: New x coordinate of the top-left corner :param y: New y coordinate of the top-left corner 関数 ``cvMoveWindow`` は,ウィンドウの位置を変更します. .. index:: NamedWindow cv::NamedWindow --------------- .. cfunction:: int cvNamedWindow( const char* name, int flags ) ウィンドウを作成します. :param name: ウィンドウの識別に用いられるウィンドウ名で,ウィンドウのタイトルバーに表示されます :param flags: ウィンドウのフラグ.現在サポートされているフラグは ``CV_WINDOW_AUTOSIZE`` のみです.このフラグがセットされていると,表示される画像サイズに合わせてウィンドウサイズが自動的に調整されます( :ref:`ShowImage` を参照してください).その場合,ユーザが手動でウィンドウサイズを変更することはできません 関数 ``cvNamedWindow`` は,画像とトラックバーのプレースホルダとして利用されるウィンドウを作成します.このウィンドウは,その名前によって参照されます. 同じ名前のウィンドウが既に存在する場合は,この関数は何もしません. .. index:: ResizeWindow cv::ResizeWindow ---------------- .. cfunction:: void cvResizeWindow( const char* name, int width, int height ) ウィンドウサイズを変更します. :param name: リサイズされるウィンドウの名前 :param width: 新しい幅 :param height: 新しい高さ 関数 ``cvResizeWindow`` は,ウィンドウサイズを変更します. .. index:: SetMouseCallback cv::SetMouseCallback -------------------- .. 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 cv::SetTrackbarPos ------------------ .. cfunction:: void cvSetTrackbarPos( const char* trackbarName, const char* windowName, int pos ) トラックバーの位置をセットします. :param trackbarName: トラックバーの名前 :param windowName: トラックバーの親ウィンドウの名前 :param pos: トラックバーの新しい位置 関数 ``cvSetTrackbarPos`` は,指定されたトラックバーの位置をセットします. .. index:: ShowImage cv::ShowImage ------------- .. 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 cv::WaitKey ----------- .. cfunction:: int cvWaitKey( int delay=0 ) キーが押されるまで待機します. :param delay: ミリ秒単位で表される遅延時間 関数 ``cvWaitKey`` は,無限に( :math:`\texttt{delay} <= 0` ),あるいは ``delay`` ミリ秒だけキーイベントを待ちます.キーが押された場合はそのキーコードが,キーが押されないまま指定されたタイムアウト時間が過ぎてしまった場合は -1 が返されます. **注意:** この関数は,HighGUI においてイベントを取得して扱うための唯一の手段です.よって,実行環境がイベント処理を扱ってくれる場合を除けば,通常のイベント処理ではこの関数を周期的に呼び出す必要があります.