Halcon找圆心
计算方法概述
在Halcon中对轮廓(XLD轮廓)的中心坐标进行计算,可借助以下若干方法达成:
通用方法:area_center_xld
算子
适用情形
适用于所有类型的XLD轮廓(包含不规则形状)。
核心代码
area_center_xld(Contours, Area, Row, Column, PointOrder)
Contours
:所输入的XLD轮廓对象Row
/Column
:输出的中心坐标(行/列坐标)PointOrder
:轮廓点的顺序('positive'表示逆时针,'negative'表示顺时针)
特定形状优化方法
圆形/圆弧轮廓中心
方法1
利用 smallest_circle_xld
计算最小外接圆的中心:
smallest_circle_xld(Contours, Row, Column, Radius)
方法2
使用 fit_circle_contour_xld
拟合圆:
fit_circle_contour_xld(Contours, 'algebraic', -1, 0, 0, 3, 2, Row, Column, Radius, StartPhi, EndPhi, PointOrder)
实例代码
* 读取图像
read_image (Image, 'D:/halcon/找圆心/幫找圓.png')
gen_rectangle1 (ROI_0, 104.118, 92.9265, 449.814, 547.758)
reduce_domain (Image, ROI_0, Region)
edges_sub_pix (Region, Edges, 'lanser2', 0.5, 5, 60)
*方法一
area_center_xld (Edges, Area, Row, Column, PointOrder)
*方法二
* smallest_circle_xld (Edges, Row, Column, Radius)
*方法三
* fit_circle_contour_xld (Edges, 'algebraic', -1, 0, 0, 3, 2, Row, Column, Radius, StartPhi, EndPhi, PointOrder1)
*生成十字标记
gen_cross_contour_xld(Cross, Row, Column, 20, 0)
dev_display(Image)
dev_display(Edges)
dev_display(Cross)
stop()
运行结果,如图:
结语:本文主要记录用halcon找圆心的几种方法,实例代码测试可用。