Halcon 获取有交集的其中一个区域,如何获取区域上的一个点
【需求】两个区域若有交集,则获取其中一个区域。
例如,获取右图里与左图有交集的区域。一般方法是以右图区域数量进行for循环,if有交集则selcet。
【目前找到的最优方法】
思路:取交集内的一个点,然后在右图中选择包含这个点的区域。(这个点不一定是交集质心,因为质心不一定在区域上)
核心函数:get_region_index(拆分的Regions,一个整型Row, 一个整型Column,Index) 获取包含这一个点的区域索引。
由于Row,Column只能是单个整数,所以还是得for循环。但是以交集的数据量进行循环,降低了循环次数。
*获取质心,并将小数整数化 area_center (拆分的交集Regions, AreCenter, RowCenter, ColumnCenter) tuple_int (RowCenter, RowCenter) tuple_int (ColumnCenter, ColumnCenter) IndexCenterInSelect:=[] for idCenter := 0 to |RowCenter|-1 by 1 *获取包含质心点的区域索引 get_region_index (ConnectedRegionsColon, RowCenter[idCenter], ColumnCenter[idCenter], IndexCenterIn) if (IndexCenterIn) IndexCenterInSelect:=[IndexCenterInSelect,IndexCenterIn] endif endfor select_obj (拆分的右图Regions, ObjectSelectedCenterIn, IndexCenterInSelect)
由于左图是右图的子集,所以我用了交集质心。因为可以保证这个质心一定在右图的区域上。
【如何获取区域上的一个点】
shape_trans (交集Regions, PointInRegion, 'inner_center')
inner_center:在输入区域骨骼上与输入区域重心距离最小的点。
虽然get_region_points可以获取区域上的所有点,但是这个函数针对的1个Region。
如果您有更好的方法,建议留言,我更新进博客,让同行一起爽歪歪~~~
分类:
Halcon图像处理
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2021-02-07 CMake VS开发Qt