halcon中旋转矩阵(hom_mat2d_rotate)的使用并解决二维平面旋转问题

 

首先由一个问题来引出后面的内容:在一个平面中确定两个点坐标,以第一个点坐标为基准图像发生30°旋转后第二个点的坐标位置是多少?

从上述问题来看有很多种简单的实现方式,倘若十几二十或者成百上千个点发生旋转后它们的位置呢?

halcon中有个非常方便的二维旋转矩阵可以很好的解决这类问题:

二维旋转矩阵的创建于使用:

dev_set_color ('red')
*开辟一个旋转矩阵
hom_mat2d_identity (HomMat2D)
*在窗口上用鼠标确定两个点
draw_point (3600, Row1, Column1)
draw_point (3600, Row2, Column2)
Rows :=[Row1,Row2]
Cols :=[Column1,Column2]
*连接它们形成一条线段方便观察
gen_contour_polygon_xld (Contour, Rows, Cols)
*像旋转矩阵中添加参数,以第一个确定的点为基准并旋转30度
hom_mat2d_rotate (HomMat2D, rad(30), Row1, Column1, HomMat2DRotate)
affine_trans_point_2d (HomMat2DRotate, Rows, Cols, Qx, Qy)
dev_set_color ('green')
*旋转之后的线段
gen_contour_polygon_xld (Contour1, Qx, Qy)

效果:

Halcon是一个用于机器视觉的软件包,它提供了广泛的图像处理分析功能。在使用Halcon进行图像处理时,我们经常会遇到需要对图像或者图像中的对象进行旋转操作的情况。变换矩阵通常用于定义图像的几何变换,包括平移、旋转缩放等。获取变换矩阵后的坐标旋转意味着根据已有的变换矩阵对坐标进行转换。 在Halcon中,可以使用`hom_mat2d_rotate`函数来创建一个旋转变换矩阵,该函数的参数包括旋转中心旋转角度。使用这个变换矩阵,可以通过`transform_points_2d`函数来变换二维点集,从而得到旋转后的坐标。 这里是一个简单的例子,展示了如何使用Halcon中的函数来获取变换矩阵后的坐标旋转: 1. 首先,确定旋转的中心点旋转角度。 2. 使用`hom_mat2d_rotate`函数创建旋转矩阵。 3. 使用`transform_points_2d`函数,应用旋转矩阵到需要旋转的点上,得到新的坐标。 ```halcon * 假设已有的点集 gen_cross_contour_xld (Contour, 20, 360, 'none', 'true') * 定义旋转中心 gen_rectangle2_contour_xld (Rectangle, 0, 0, 100, 100, 'center', 'true') * 定义旋转角度 Angle := 45.0 * 获取旋转变换矩阵 hom_mat2d_rotate (HomMat2D, Angle, 'center', Rectangle) * 应用变换矩阵到点集 transform_points_2d (Contour, HomMat2D, NewContour) * 显示结果 dev_display (NewContour) ``` 在上述代码中,`gen_cross_contour_xld`生成一个十字形的XLD轮廓,`gen_rectangle2_contour_xld`生成一个矩形轮廓用作旋转中心。`Angle`定义了旋转的角度。之后创建了一个旋转变换矩阵`HomMat2D`,将其应用到`Contour`点集上,得到旋转后的点集`NewContour`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值