Halcon 关于角度问题的总结

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,这里不再描述。关于角度描述如下:
在这里插入图片描述

  • 13
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值