有时候在opencv中响应鼠标点击,以来处理一些事情,以下是一些心得:
1.打开鼠标响应
cvNamedWindow("相机1",CV_WINDOW_AUTOSIZE); //窗体的命名
cvSetMouseCallback( "相机1", mouseHandler, NULL ); //*需要鼠标响应的窗体名字同上 * mouseHandler 为鼠标处理函数。
2.鼠标响应函数
void mouseHandler(int event, int x, int y, int flags, void *param){ //x,y为鼠标位置坐标
switch( event ){
case CV_EVENT_MOUSEMOVE:
鼠标移动处理
break;
case CV_EVENT_LBUTTONDOWN:
鼠标左键按下处理
break;
case CV_EVENT_LBUTTONUP:
鼠标左键释放处理
break;
case CV_EVENT_RBUTTONDOWN:
右键按下处理
break;
//case CV_EVENT_MBUTTONDOWN:
}
}
可以通过以下内容选取不同的事件
CV_EVENT_MOUSEMOVE =0,
CV_EVENT_LBUTTONDOWN =1,
CV_EVENT_RBUTTONDOWN =2,
CV_EVENT_MBUTTONDOWN =3,
CV_EVENT_LBUTTONUP =4,
CV_EVENT_RBUTTONUP =5,
CV_EVENT_MBUTTONUP =6,
CV_EVENT_LBUTTONDBLCLK =7,
CV_EVENT_RBUTTONDBLCLK =8,
CV_EVENT_MBUTTONDBLCLK =9
3. 主函数
main函数中 加个while循环便可等待鼠标响应处理。
4.实际应用:
最近在模板选取时,需要用鼠标画框选取模板图,通过左键画框,右键取消画框。