关于图像中两点距离的测量 图像处理中,提取出目标轮廓之后,如何标记轮廓中的两点呢?用鼠标互动点击吗?之后如何测量两点间的距离呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不明白LZ什么意思轮廓其实就是点集,你要找两点,当然要有约束条件。比如是直线找两端点,只要找最小X最大X(非垂直),垂直情况找最大Y和最小Y,不就得到了点的坐标?至于距离,使用勾股定理不就出来了? 我的做法是学习AutoCAD(请大家不要见笑)的“磁吸”效果。1.我定义一个矩形框过滤点集的函数(形参矩形为客户区坐标,在函数内部转成世界坐标),将过滤出的点的索引记入一个临时队列。2.为了加速选取,在客户区发现变化和视图缩放后,先用客户区矩形进行过滤;3.定义一个捕捉半径(正方形框的半边长)变量;4.在OnMouseMove函数中以光标点为中心建立小的过滤矩形框;5.调用矩形过滤函数,对客户区矩形过滤出的点集再次过滤,滤出与光标相近的点(如果捕捉半径大的话可能有多个);6.计算最近的点(如果捕捉半径小,只滤出一个点,可忽略此步);7.将该点从世界坐标转换为客户区坐标;8.将该点客户区坐标转换为屏幕坐标;9.调用SetCursorPos()函数将光标指向该点(磁吸);10.如果想选中该点,左击鼠标对该点做标记;11.同理选第二个点,进行测量。要点:1.如果嫌麻烦,可以忽略7~9步,不要磁吸效果,也可以选中点,反正都过滤出来了;2.如果用磁吸效果,在光标被吸引过程,用一个BOOL变量来标识是否进入磁吸矩形,在矩形内取消再次磁吸功能。否则你的光标就被套牢了,^_^3.最好以光标为中心画个磁吸矩形框,一目了然知道会吸住哪个(些)点。4.此方法可推广到用鼠标拖一个大矩形框,选中许多点本人也是MFC菜鸟,恳请各位大侠批评指正。 看你的需要了,如果你是希望提取后的轮廓中药提取的地方是比较有特点的,比如说在图像最上面或者最下面或者最左,右边,那就可以不用选取了,然后求距离就用sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)),其中x1,y1,x2,y2是特征轮廓点对应得像素坐标,如果不是那些特别的点,就可以使用鼠标选取,利用鼠标点击响应并记录,或者是拖拽然后根据区域再处理找出你要的特征点。如果是要轮廓特征区域的距离,就可以先找区域然后可以取特征区域里面的特征点(比如形心或者质心什么的)。。 有两个问题请教 有人做 MPI 的吗? 急急急!!!关于虚拟列表显示的问题 在VC++中如何使用无背景的图片啊? 是用icon吗? 也不行啊 新手求COM技术内幕源代码 VC保存文件时为什么经常出错? 如何列出一张动态表的列名? 给出解决方法者给50分 菜鸟问题--如何清除PictureBox上显示的图片? 请问如何利用win api函数,能够通过不需要用户名和密码的代理服务器。(特急!!!!) OnFileOpen()函数怎么解决 进来帮帮我 关于浏览器开发碰到的问题
1.我定义一个矩形框过滤点集的函数(形参矩形为客户区坐标,在函数内部转成世界坐标),将过滤出的点的索引记入一个临时队列。
2.为了加速选取,在客户区发现变化和视图缩放后,先用客户区矩形进行过滤;
3.定义一个捕捉半径(正方形框的半边长)变量;
4.在OnMouseMove函数中以光标点为中心建立小的过滤矩形框;
5.调用矩形过滤函数,对客户区矩形过滤出的点集再次过滤,滤出与光标相近的点(如果捕捉半径大的话可能有多个);
6.计算最近的点(如果捕捉半径小,只滤出一个点,可忽略此步);
7.将该点从世界坐标转换为客户区坐标;
8.将该点客户区坐标转换为屏幕坐标;
9.调用SetCursorPos()函数将光标指向该点(磁吸);
10.如果想选中该点,左击鼠标对该点做标记;
11.同理选第二个点,进行测量。要点:
1.如果嫌麻烦,可以忽略7~9步,不要磁吸效果,也可以选中点,反正都过滤出来了;
2.如果用磁吸效果,在光标被吸引过程,用一个BOOL变量来标识是否进入磁吸矩形,在矩形内取消再次磁吸功能。否则你的光标就被套牢了,^_^
3.最好以光标为中心画个磁吸矩形框,一目了然知道会吸住哪个(些)点。
4.此方法可推广到用鼠标拖一个大矩形框,选中许多点本人也是MFC菜鸟,恳请各位大侠批评指正。