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中旋转矩阵(hom_mat2d_rotate)的使用并解决二维平面旋转问题_第1张图片

你可能感兴趣的:(halcon)