この図は,Qt GUIで実装された新しい機能を表しています.見ての通り,新しいGUIでは,ステータスバー,ツールバー,コントロールパネルが利用できます.コントロールパネルには,トラックバーとボタンバーを追加することができます.
トラックバーを追加するには, window _ name パラメータが NULL でなければいけません.
ボタンバーを追加するには,ボタンを作成しなければいけません.
最後にコントロールパネルに追加されたのがボタンバーならば,新しいボタンが最後のボタンの右側に追加されます.
最後にコントロールパネルに追加されたのがトラックバー,またはコントロールパネルが空ならば,新しいボタンバーが作成され,追加されます.
以下のコードは,前述の図の状態を再現する例です.
int main(int argc, char *argv[])
int value = 50;
int value2 = 0;
cvNamedWindow("main1",CV_WINDOW_NORMAL);
cvNamedWindow("main2",CV_WINDOW_AUTOSIZE | CV_GUI_NORMAL);
cvCreateTrackbar( "track1", "main1", &value, 255, NULL);//OK tested
char* nameb1 = "button1";
char* nameb2 = "button2";
cvCreateButton(nameb1,callbackButton,nameb1,CV_CHECKBOX,1);
cvCreateButton(nameb2,callbackButton,nameb2,CV_CHECKBOX,0);
cvCreateTrackbar( "track2", NULL, &value2, 255, NULL);
cvCreateButton("button5",callbackButton1,NULL,CV_RADIOBOX,0);
cvCreateButton("button6",callbackButton2,NULL,CV_RADIOBOX,1);
cvSetMouseCallback( "main2",on_mouse,NULL );
IplImage* img1 = cvLoadImage("files/flower.jpg");
IplImage* img2 = cvCreateImage(cvGetSize(img1),8,3);
CvCapture* video = cvCaptureFromFile("files/hockey.avi");
IplImage* img3 = cvCreateImage(cvGetSize(cvQueryFrame(video)),8,3);
while(cvWaitKey(33) != 27)
{
cvAddS(img1,cvScalarAll(value),img2);
cvAddS(cvQueryFrame(video),cvScalarAll(value2),img3);
cvShowImage("main1",img2);
cvShowImage("main2",img3);
}
cvDestroyAllWindows();
cvReleaseImage(&img1);
cvReleaseImage(&img2);
cvReleaseImage(&img3);
cvReleaseCapture(&video);
return 0;
}
ウィンドウのパラメータを動的に変更します.
パラメタ: |
|
---|
関数 `` cvSetWindowProperty`` を利用すると,ウィンドウプロパティを変更することができます.
ウィンドウパラメータを取得します.
パラメタ: |
|
---|
戻り値の意味については SetWindowProperty を参照してください.
関数 `` cvGetWindowProperty`` は,ウィンドウのプロパティを返します.
( で)画像上にテキストを描画する際に利用されるフォントを作成します.
パラメタ: |
|
---|
関数 cvFontQt は, addText で利用される CvFont オブジェクトを作成します.この CvFont は,cvPutText とは互換性がありません.
この関数の基本的な利用法は,次のようになります:
CvFont font = cvFontQt(''Times'');
cvAddText( img1, ``Hello World !'', cvPoint(50,50), &font);
画像上にテキストを描画します.
パラメタ: |
|
---|
関数 cvAddText は,画像 img 上に指定されたフォント font を用いて text を描画します( FontQt の例を参照してください).
ウィンドウ画像上に,delay ミリ秒間だけテキストをオーバレイ表示します.これは,画像データを変更しません.テキストは画像の一番上に表示されます.
パラメタ: |
|
---|
関数 cvDisplayOverlay は,時間 delay の間だけ,役立つ情報やヒントなどをウィンドウ上に表示するために利用します.この情報は,ウィンドウの上部に表示されます.
ウィンドウのステータスバーに,delay ミリ秒間だけテキストを表示します.
パラメタ: |
|
---|
関数 cvDisplayOverlay は,時間 delay の間だけ,情報やヒントなどをウィンドウ上に表示するために利用します.この情報は,ウィンドウ(ウィンドウ作成時に CV_GUI_EXPANDED フラグを指定する必要があります )のステータスバーに表示されます.
_
windownameに表示される画像上にOpenGL の描画を行うための,コールバック関数を作成します.
パラメタ: |
|
---|
{ フレーム毎に呼び出される関数へのポインタ. この関数は, void Foo(*void); という形式である必要があります.
パラメタ: |
|
---|
xo
関数 cvCreateOpenGLCallback は,ウィンドウ上に 3D データを描画するために利用できます.コールバックの例としては,次のようなものがあります:
void on_opengl(void* param)
{
// ここでシーンを描画します
glLoadIdentity();
glTranslated(0.0, 0.0, -1.0);
glRotatef( 55, 1, 0, 0 );
glRotatef( 45, 0, 1, 0 );
glRotatef( 0, 0, 0, 1 );
static const int coords[6][4][3] = {
{ { +1, -1, -1 }, { -1, -1, -1 }, { -1, +1, -1 }, { +1, +1, -1 } },
{ { +1, +1, -1 }, { -1, +1, -1 }, { -1, +1, +1 }, { +1, +1, +1 } },
{ { +1, -1, +1 }, { +1, -1, -1 }, { +1, +1, -1 }, { +1, +1, +1 } },
{ { -1, -1, -1 }, { -1, -1, +1 }, { -1, +1, +1 }, { -1, +1, -1 } },
{ { +1, -1, +1 }, { -1, -1, +1 }, { -1, -1, -1 }, { +1, -1, -1 } },
{ { -1, -1, +1 }, { +1, -1, +1 }, { +1, +1, +1 }, { -1, +1, +1 } }
};
for (int i = 0; i < 6; ++i) {
glColor3ub( i*20, 100+i*10, i*42 );
glBegin(GL_QUADS);
for (int j = 0; j < 4; ++j) {
glVertex3d(0.2 * coords[i][j][0], 0.2 * coords[i][j][1], 0.2 * coords[i][j][2]);
}
glEnd();
}
}
CV_EXTERN_C_FUNCPTR( *CvOpenGLCallback)(void* userdata));
_
ウィンドウ windownameのパラメータを保存します.
パラメタ: |
|
---|
関数 cvSaveWindowParameters は,ウィンドウ window_name の,サイズ,位置,フラグ,トラックバーの値,ズームとパン位置を保存します.
_
ウィンドウ windownameのパラメータを読み込みます.
パラメタ: |
|
---|
関数 cvLoadWindowParameters は,ウィンドウ window_name の,サイズ,位置,フラグ,トラックバーの値,ズームとパン位置を読み込みます.
コントロールパネル上にボタンを作成します.
{ボタンの名前. (これが NULL の場合,”button <number of boutton>” という名前になります)
パラメタ: |
|
---|
button_type パラメータは,次の値をとることができます: *(オプション – デフォルトは,通常のプッシュボタン.)
- CV_PUSH_BUTTON ボタンは,通常のプッシュボタンになります.
- CV_CHECKBOX ボタンは,チェックボックスボタンになります.
- CV_RADIOBOX ボタンは,ラジオボックスボタンになります.同じボタンバー(同じライン上)にあるラジオボックスは,排他的に利用されます.つまり,同時に1つしか選択できません.
- initial_button_state ボタンのデフォルトの状態.チェックボックスとラジオボックスの場合,これは 0 または 1 になります. (オプション)
関数 cvCreateButton は,コントロールパネルにボタンを追加します.ボタンは,ボタンバーの最後のボタンの右側に追加されます. コントロールパネルにボタンバーがない場合,またはコントロールパネルに最後に追加されたのがトラックバーである場合は,新たにボタンバーが作成されます.
ここでは,様々な cvCreateButton の呼び出し例を示します:
cvCreateButton(NULL,callbackButton);// callbackButton を呼び出す,通常のプッシュボタン "button 0" を作成.
cvCreateButton("button2",callbackButton,NULL,CV_CHECKBOX,0);
cvCreateButton("button3",callbackButton,&value);
cvCreateButton("button5",callbackButton1,NULL,CV_RADIOBOX);
cvCreateButton("button6",callbackButton2,NULL,CV_PUSH_BUTTON,1);
CV_EXTERN_C_FUNCPTR( *CvButtonCallback)(int state, void* userdata));