鼠标选择图像上点或者闭合多边形
来源:互联网 发布:端口号的目的是 编辑:程序博客网 时间:2024/06/11 13:11
设计思路:
在主函数中选择工作模式:半自动模式下,双击鼠标左键得到一个标记点;手动模式下,单击左键选择闭合多边形顶点,单击右键结束一个闭合多边形选择。
#define AUTO 0#define SEMI_AUTO 1#define NON_AUTO 2int model = 0;//工作模式全局变量bool m_first = true;//手动起点标志全局变量int whole_i;void On_mouse_NON_AUTO(int event, int x, int y, int flags, void*);void On_mouse_SEMI_AUTO(int event, int x, int y, int flags, void*);int main(){ string impath2 = "./img/497.bmp"; Mat img2 = imread(impath2,0); cout << "工作模式选择(0-自动 1-半自动 2-手动):" ; cin >> model; string wname = "半自动or手动"; imshow(wname, img2); switch (model) { case AUTO: cout << "自动" << endl; break; case SEMI_AUTO: whole_i = 0; setMouseCallback(wname, On_mouse_SEMI_AUTO, 0); break; case NON_AUTO: m_first = true; setMouseCallback(wname, On_mouse_NON_AUTO, 0); whole_i = 0; break; } waitKey( ); return 0;}void On_mouse_NON_AUTO(int event, int x, int y, int flags, void*){ Point pre_p,p0; if (event == EVENT_LBUTTONDOWN) { if (m_first) { p0 = Point(x, y); pre_p = p0; m_first = false; cout <<"起点:"<< p0.x << " " << p0.y << endl; } else { pre_p = Point(x, y); cout << pre_p.x << " " << pre_p.y << endl; } } else if(event == CV_EVENT_RBUTTONDBLCLK) { m_first = true; whole_i++; cout << "结束一圈啦!" << endl; }}void On_mouse_SEMI_AUTO(int event, int x, int y, int flags, void*){ Point pre_p; if (event == CV_EVENT_LBUTTONDBLCLK) { pre_p = Point(x, y); cout << pre_p.x << " " << pre_p.y << endl; whole_i++; }}
阅读全文
0 0
- 鼠标选择图像上点或者闭合多边形
- 判断一个点是否在任意闭合多边形内
- 用鼠标点击图像,获取图像上某一点的(b,g,r)值
- 判断点是否在多边形内(包括在多边形上)
- hdu1756( 判断点是否在多边形上)
- 鼠标滑上选择文本
- C#判断点在线上或在多边形的边框上|点在多边形内部
- 点是否在线上或者椭圆上
- openlayers3+中实现点选、圈选、多边形选择点要素
- 格点多边形上点的数目(边上、内部、以及多边形面积)----poj1265
- Qt下加载图片,在图片上绘制多边形,移动鼠标拉伸多边形
- matlab gui 鼠标选择矩形区域 返回鼠标坐标点
- 判断点是否在多边形上算法roadMap
- geotools判断一个点是否在多边形上
- 射线法判断地图上点是否在多边形内
- 地图上点与多边形的关系判断
- geotools判断一个点是否在多边形上
- OpenCV在图像上画线、矩形、椭圆、多边形、填充的多边形、圆、显示文字
- 数据库面试题
- 学生信息管理系统问题(二)
- STM32学习笔记系列(由局部到整体,由基础到系统,很合理的进阶过程)
- 如何在Android5.1系统上实现RecyclerView高度自适应
- servlet验证码
- 鼠标选择图像上点或者闭合多边形
- 转载反射机制
- 从零开始前端学习[9]:css中的背景样式background的使用
- HDU 6211 Pythagoras (预处理, 2017 ACM/ICPC Asia Regional Qingdao Online)
- 美团笔试题 钱币组合问题
- LeetCode 39. Combination Sum
- java打印五星图形,字符串数组
- September English summary
- Docker中安装Centos6