halcon XLD 常用轮廓函数 (草稿)

select_contours_xld ( Contours : SelectedContours : Feature, Min1,Max1, Min2, Max2 : )
从xld轮廓中提取符合一定条件的轮廓
‘Feature’可以为以下几种:
’contour_length’: 保留在Min1和Max1长度范围内的轮廓。Min2和Max2对于此feature没有作用。
’maximum_extent’: 返回方法同‘contour_length’,但是计算方法不同,在行列方向的八个极值点计算出来的。Min2和Max2对于此feature没有作用。
‘direction’:若轮廓的回归线(regression line)的方向在Min1和Max1中间,则返回;方向为逆时针计算方向。在[0,2pi]之间。Min2和Max2对于此feature没有作用。
’curvature’:若轮廓到其回归线的平均距离在在Min1和Max1中间,并且距离的方差在Min2和Max2中间,则返回。
’closed’:若轮廓的起点到终点的距离不大于Max1的返回,相当于筛选的半开空间,其他参数都用不到。
’open’: 若轮廓的起点到终点的距离大于Min1的返回,其他参数都用不到。


union_adjacent_contours_xld (Contours : UnionContours : MaxDistAbs, MaxDistRel, Mode : )
将端点距离很近的轮廓连接起来
临近两个轮廓的端点的距离既没有超过阈值MaxDistAbs,也没有超过长一点的轮廓长度乘以MaxDistRel(注意这个值貌似指的不是直接阈值,而是用这个值乘以两个轮廓中长的那个的长度的结果作为阈值),则连接。


union_cocircular_contours_xld
将组成同一个圆的轮廓连接起来


union_collinear_contours_xld (
Contours : UnionContours : MaxDistAbs, MaxDistRel, MaxShift,
MaxA

### Halcon XLD 轮廓常用算子 #### lines_gauss 函数 `lines_gauss` 是用于从图像中提取线条特征的一个重要函数。此函数通过高斯滤波器平滑输入图像并应用Canny边缘检测算法来寻找潜在的直线结构。参数 `Sigma`, `Low`, 和 `High` 控制着滤波和平滑的效果;而 `LightDark` 参数决定了要找的是亮边还是暗边;最后两个参数定义了线模型的选择以及是否闭合连接点。 ```cpp // C++ code example using the 'lines_gauss' operator. gen_empty_obj(&Image); read_image(&Image,"image_path"); lines_gauss(Image,&Lines,1.0,20,80,'light',7,'standard',true); // Example parameters ``` #### get_contour_xld 函数 为了获取XLD轮廓上的具体位置数据,可以使用 `get_contour_xld` 来返回轮廓上每一个点的位置信息。这有助于后续处理如形状分析或几何变换等操作。该命令接收一个XLD对象作为输入,并输出这些点对应的行(`Row`)和列(`Col`)坐标[^1]。 ```cpp // C++ code snippet demonstrating how to use 'get_contour_xld'. get_contour_xld(Contour,&Rows,&Cols); for(int i=0;i<Rows.length();i++){ printf("Point %d at (%f,%f)\n",i+1,Cols[i],Rows[i]); } ``` #### get_contour_attrib_xld 函数 当需要了解关于特定XLD轮廓更详细的特性时,则可调用 `get_contour_attrib_xld` 。这个工具允许访问诸如长度、面积之类的属性值,这对于评估目标物尺寸或是其他定量描述非常有用。用户只需指定想要查询的名字即可得到相应的属性结果。 ```cpp // An illustration of getting contour attributes via 'get_contour_attrib_xld' string attrib_name="length"; double length; get_contour_attrib_xld(Contour,&attrib_name,&length); cout << "The total length of this contour is:"<< length<<endl; ``` #### regress_contours_xld 函数 对于那些希望进一步研究轮廓方向特性的开发者来说,`regress_contours_xld` 提供了一种有效的方法来拟合一条最佳匹配给定XLD轮廓集的回归线。这条线上每一点都对应于原始轮廓中的某个部分,并且可以通过计算得出其单位法向量的方向。这种方法特别适用于需要精确测量角度或者方位的应用场景[^3]。 ```cpp // A brief demonstration on utilizing 'regress_contours_xld' gen_empty_obj(&Contours); append_region(Contours,XLD_Region); regress_contours_xld(Contours,&StartPoints,&EndPoints,&NormVectors,&Distances); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值