设置首页收藏本站
开启左侧

[算子] erase_contour_xld实现轮廓线的擦除

[复制链接]
Criss 发表于 2023-3-31 16:50:38 | 显示全部楼层 |阅读模式
参数:
  1. erase_contour_xld(Contour : ContourOut : Radius : )
复制代码


参数说明:
  1. Contour 传入单轮廓
  2. ContourOut 传出被擦除的单轮廓
  3. Radius 擦除半径
复制代码


外部算子源码:
  1. *传入轮廓(非polygon多边形)进行擦除,左键点击擦除,右键完成
  2. dev_get_window (WindowHandle)
  3. gen_circle_contour_xld (ContCircle, 0, 0, Radius, 0, 6.28318, 'positive', 1)
  4. gen_region_contour_xld (Contour, Region, 'margin')
  5. dev_display(Region)
  6. while(true)
  7.     try
  8.         get_mbutton (WindowHandle, Row1, Column1, Button)
  9.         if(4 == Button)
  10.             break
  11.         endif
  12.         set_system ('flush_graphic', 'false')
  13.         vector_angle_to_rigid (0, 0, 0, Row1, Column1, 0, HomMat2D)
  14.         affine_trans_contour_xld (ContCircle, ContoursAffineTrans, HomMat2D)
  15.         gen_region_contour_xld (ContoursAffineTrans, RegionCircle, 'filled')
  16.         difference (Region, RegionCircle, Region)

  17.         dev_clear_window ()
  18.         set_system ('flush_graphic', 'true')
  19.         dev_display(Region)
  20.     catch (Exception)
  21.     endtry
  22. endwhile
  23. skeleton (Region, Skeleton)
  24. gen_contours_skeleton_xld (Skeleton, ContourOut, 1, 'filter')
  25. return ()
复制代码
可自行根据参数表封装修改
erase_contour_xld.hdvp (1.64 KB, 下载次数: 42)
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
halcon2016 发表于 2023-6-28 16:28:42 | 显示全部楼层
这种方法对复杂轮廓的处理有问题,而且轮廓和区域转来转去的损失精度
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
 楼主| Criss 发表于 2023-6-28 16:48:14 | 显示全部楼层
halcon2016 发表于 2023-6-28 16:28
这种方法对复杂轮廓的处理有问题,而且轮廓和区域转来转去的损失精度

是的,这只是大致思路,不算是最佳优化代码。
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
zrp785962235 发表于 2023-7-3 13:03:50 | 显示全部楼层
我看到有人写出用橡皮擦消除轮廓,橡皮擦大小还可以自定义,不知道是怎么实现的,有知道的回复下,谢谢
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
 楼主| Criss 发表于 2023-7-3 18:40:36 | 显示全部楼层
zrp785962235 发表于 2023-7-3 13:03
我看到有人写出用橡皮擦消除轮廓,橡皮擦大小还可以自定义,不知道是怎么实现的,有知道的回复下,谢谢 ...

就是结构体大小也可以定义啊,比如圆形就是半径,长方形就是尺寸大小。
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
zrp785962235 发表于 2023-7-6 08:13:24 | 显示全部楼层
Criss 发表于 2023-7-3 18:40
就是结构体大小也可以定义啊,比如圆形就是半径,长方形就是尺寸大小。 ...

如何能在窗口显示出擦除工具轮廓,并且能实时移动清除轮廓?试好多久都不行,有没有方法提供下,非常感谢
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
老老常 发表于 2023-7-28 15:01:56 | 显示全部楼层
不错,又学了一个新知识
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
糯米100 发表于 2023-10-26 11:37:03 | 显示全部楼层
本帖最后由 糯米100 于 2023-10-26 12:02 编辑
Criss 发表于 2023-6-28 16:48
是的,这只是大致思路,不算是最佳优化代码。

matching 向导工具里做模板轮廓有个删除的小工具,不知道它如何实现的
Snipaste_2023-10-26_12-02-00.png


奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
percent10 发表于 2025-1-14 10:03:30 | 显示全部楼层
可以实现,但是可能是halcon bug, gen_region_contour_xld (Contour, Region, 'margin'),轮廓有拐弯的地方,会产生多余的线
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表