最終更新: mikk_ni3_92 2010年02月13日(土) 16:17:13履歴
現在地 >> メニュー >> OpenCV >> highgui編01
INDEX:highgui編01 >> highgui編02
OpenCVのマウスイベントは「cvSetMouseCallback関数」で登録する。
※highgui.hより
func(int event, int x, int y, int flags, void* param)
となる。
【例】
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つのコールバックでおこなう。