opencv 鼠标响应机制 onMouse()函数的理解
2016-08-10 16:27
323 查看
void onMouse(int event, int x, int y, int, void*) { if (selectObject)//只有当鼠标左键按下去时才有效,然后通过if里面代码就可以确定所选择的矩形区域selection了 { selection.x = MIN(x, origin.x);//矩形左上角顶点坐标 selection.y = MIN(y, origin.y); selection.width = std::abs(x - origin.x);//矩形宽 selection.height = std::abs(y - origin.y);//矩形高 selection &= Rect(0, 0, image.cols, image.rows);//用于确保所选的矩形区域在图片范围内 } switch (event) { case CV_EVENT_LBUTTONDOWN: origin = Point(x, y); selection = Rect(x, y, 0, 0);//鼠标刚按下去时初始化了一个矩形区域 selectObject = true; break; case CV_EVENT_LBUTTONUP: selectObject = false; if (selection.width > 0 && selection.height > 0) trackObject = -1; break; } }
鼠标按下去是一个事件,传到这个函数里面,触发
case CV_EVENT_LBUTTONDOWN: 这一行
然后鼠标在移动触发<span style="font-family: Arial, Helvetica, sans-serif;">if (selectObject) 这一行</span>
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="color:#ff0000;">这时候新的坐标点的x,y值都会传过来,不</span>管是从哪个方向往哪个方向画都可以得到矩形(因为他是取绝对值的,从左下往。。。,等等等都行)</span>
<span style="font-family: Arial, Helvetica, sans-serif;">最后</span>
<span style="font-family:Arial, Helvetica, sans-serif;">左键鼠标抬起这个事件 传到函数里触发</span><pre name="code" class="html">case CV_EVENT_LBUTTONUP:这一行
就确定了已经选好的矩形
相关文章推荐
- OpenCV之响应鼠标(二):函数cvSetMouseCallback()和其副程式onMouse()的使用(OpenCV2.4.5)
- OpenCV响应鼠标函数cvSetMouseCallback()和其副程式onMouse()的使用(OpenCV2.4.5)
- opencv3 鼠标响应函数画矩形
- opencv 鼠标响应函数
- Opencv函数setMouseCallback鼠标事件响应
- OpenCV--鼠标事件响应
- MFC消息响应机制及映射机制理解
- (转载)理解IDS的主动响应机制
- OpenCV中响应鼠标信息
- TrackMouseEvent函数实现鼠标停留响应
- C#中鼠标键盘响应机制
- OPencv基本操作,响应键盘、鼠标、滚动条
- TrackMouseEvent函数实现鼠标停留响应
- Opencv学习记录之鼠标窗口响应
- opencv学习心得(一)鼠标响应事件绘制轮廓
- opencv学习心得(一)鼠标响应事件绘制轮廓
- 折腾MFC无爱~看看OpenCV自带的鼠标、键盘消息处理机制。
- MFC消息响应机制及映射机制理解
- OpenCV中响应鼠标消息
- [Opencv] 鼠标响应