現在地 >> メニュー >> OpenCV >> highgui編01
INDEX:highgui編01 >> highgui編02

マウスイベント


OpenCVのマウスイベントは「cvSetMouseCallback関数」で登録する。

※highgui.hより
typedef void (CV_CDECL *CvMouseCallback )(int event, int x, int y, int flags, void* param);

/* assign callback for mouse events */
CVAPI(void) cvSetMouseCallback( const char* window_name, CvMouseCallback on_mouse,
                                void* param CV_DEFAULT(NULL));
▲ココに書いてあるように、コールバック関数の引数は
func(int event, int x, int y, int flags, void* param)
となる。

【例】
void mouseCbFunc(int event, int x, int y ,int flags, void* param)
{
	//プログラムしやすいようにポインタをわたす
	IplImage *img = static_cast<IplImage *>(param);
	switch(event)
	{
	case CV_EVENT_LBUTTONDOWN://クリック位置に円を描画
		cvDrawCircle(img,cvPoint(x,y),50,CV_RGB(255,0,255),2);
		cvShowImage("mouse test",img);
		break;
	}
}


int main()
{
	IplImage *imgA = cvLoadImage(filename);
	… …
	cvSetMouseCallback("mouse test",mouseCbFunc,static_cast<void *>(imgA));
	… …
	cvWaitKey();
	… …
}
▲ドラッグもクリックも1つのコールバックでおこなう。

サンプルコード

目次

― その他 ―

Wiki内検索

計測中...(07.10.8〜)

Save The World






▲よろしければ広告のクリックもお願いします


▲ランキングに参加しました

管理人/副管理人のみ編集できます