Halcon 关于角度问题的总结

本文深入探讨Halcon中角度处理的各种细节,包括旋转角度的方向性、不同算子角度输入输出的特点,以及卡尺测量的角度问题。通过实例代码展示如何正确理解和应用角度参数,避免编程陷阱。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Halcon 关于角度问题的总结

Halcon处理中有很多关于角度计算的问题,有时候会莫名其妙的出现和想象不一致的问题,简单的问题很好排查,但有的问题需要理解透原理,才能解决问题。因此为了避免有同样问题的你踩坑,将我填过的坑分享给大家,希望对你有所帮助。
关于Halcon角度问题还有很多,这篇博客后期会持续更新。如果大家有疑问或者有更好的心得,希望共同探讨交流。

一、旋转角度问题

Halcon中顺时针旋转为负,逆时针旋转为正。
以红色线条为基准,顺时针旋转45度(白色线条),逆时针旋转45度(绿色线条)。

在这里插入图片描述

代码:

* 生成矩形的中心点以及角度
RecRow := 300
RecCol := 300
RecAngle := rad(0)

* 生成一个矩形
gen_rectangle2 (rectangle, RecRow, RecCol, RecAngle, 100, 1)

* 仿射变换偏移角度(旋转角度45度)
set_color (200000, 'green')
hom_mat2d_identity (HomMat2DIdentity)
hom_mat2d_rotate (HomMat2DIdentity, rad(45), RecRow, RecCol, HomMat2DRotate)
affine_trans_region (rectangle, RegionAffineTransP, HomMat2DRotate, 'nearest_neighbor')

* 仿射变换偏移角度(旋转角度-45度)
set_color (200000, 'white')
hom_mat2d_identity (HomMat2DIdentity)
hom_mat2d_rotate (HomMat2DIdentity, rad(-45), RecRow, RecCol, HomMat2DRotate)
affine_trans_region (rectangle, RegionAffineTransN, HomMat2DRotate, 'nearest_neighbor')

二、算子gen_rectangle2( : Rectangle : Row, Column, Phi, Length1, Length2 : )角度问题

输入参数Phi为弧度制,1度对应的弧度为0.0174533,1弧度对应角度为57.2958度。正常情况下大家喜欢用角度来描述旋转度数,因为角度更直观,符合正常思维。但如果直接用角度赋值Phi,效果会超出的你的想象,因为这个算子你给的值它默认为弧度,所以,如果想用角度来表示更直观,需要将角度转换为弧度,只需要rad(angle)转换一下即可。
算子gen_rectangle2角度范围为- 90 < angle <= 90,如果强制给的角度超出这个范围,程序也不会报错。事实上Halcon内部将你给的超出范围的角度转换到这个范围。
在这里插入图片描述

三、算子smallest_rectangle2(Regions : : : Row, Column, Phi, Length1, Length2)角度问题

1、首先 角度范围- 90< angle <= 90,无论通过算子gen_rectangle2生成的Region角度多大,smallest_rectangle2获取的角度都不会超出这个范围。
在这里插入图片描述
2、算子smallest_rectangle2输出的角度是通过计算Region长轴与X轴正方向夹角获取,且角度不能超出限定范围。
在这里插入图片描述

四、Halcon卡尺角度问题

关于卡尺的介绍,请参考我前面的博客内容https://blog.csdn.net/qq_18620653/article/details/106194813,这里不再描述。关于角度描述如下:
在这里插入图片描述

Halcon是一个强大的机器视觉软件库,广泛应用于工业自动化、质量检测和机器人导航等领域。在Halcon中,角度的概念非常重要,因为它涉及到图像处理计算机视觉中的许多操作。 ### 角度Halcon中的应用 1. **图像旋转**: 在图像处理中,旋转操作是常见的。Halcon提供了旋转图像的功能,可以通过指定旋转角度来实现。旋转角度以度为单位,正值表示逆时针旋转,负值表示顺时针旋转。 ```halcon rotateImage(Image, RotatedImage, Angle, 'constant') ``` 2. **边缘检测**: 在边缘检测中,角度信息可以用来确定边缘的方向。Halcon的边缘检测算法可以输出每个边缘点的角度信息。 ```halcon edges_sub_pix(Image, Edges, 'canny', 3, 20, 40) ``` 3. **特征匹配**: 在特征匹配中,角度信息可以用于提高匹配的准确性。通过比较特征点的角度,可以减少误匹配的概率。 ```halcon find_shape_model(Image, ModelID, -0.5, 0.5, 0.5, 'least_squares', 0, 0.9, Row, Column, Angle, Score) ``` 4. **坐标变换**: 在坐标变换中,角度信息用于旋转和平移操作。通过指定旋转角度和位移,可以将一个坐标系的点变换到另一个坐标系。 ```halcon affine_trans_point_2d(HomMat2D, Row, Column, RowTrans, ColumnTrans) ``` ### 角度的计算 在Halcon中,角度的计算可以通过多种方式实现。例如,可以使用`atan2`函数来计算两个点之间的角度。 ```halcon Angle := rad(atan2(dy, dx)) ``` ### 总结 角度Halcon图像处理计算机视觉操作中起着至关重要的作用。通过合理利用角度信息,可以实现更精确和高效的图像处理任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值