(一)步骤
通过hom_mat2d_identity算子创建一个初始化矩阵
在初始化矩阵的基础上,使用hom_mat2d_translate(平移)、hom_mat2d_rotate(旋转)、hom_mat2d_scale(缩放)等生成仿射变换矩阵(这几个算子可以叠加或者重复使用)
根据生成的变换矩阵执行仿射变换,执行仿射变换的算子通常有:affine_trans_image、affine_trans_region、affine_trans_contour_xld,即不管对于图像、区域、XLD都可以执行仿射变换
(二)实例1
-
在Halcon例程中方法--->几何转换--->affine_trans_region.hdev
dev_close_window () dev_open_window (0, 0, 512, 512, 'white', WindowID) dev_set_color ('black') *在图形窗口中任意画一个图形,用鼠标右键确认 draw_region (Region, WindowID) *初始化一个变换矩阵 hom_mat2d_identity (HomMat2DIdentity) *通过给定旋转角度(顺时针为负,逆时针为正),旋转原点得到旋转矩阵 hom_mat2d_rotate (HomMat2DIdentity, -0.3, 256, 256, HomMat2DRotate) *通过给定X、Y方向缩放尺度,缩放原点得到缩放矩阵 hom_mat2d_scale (HomMat2DRotate, 1.5, 1.5, 256, 256, HomMat2DScale) *最后得到仿射变换图片 affine_trans_region (Region, RegionAffineTrans, HomMat2DScale, 'false') dev_clear_window () dev_set_draw ('margin') dev_set_color ('red') dev_display (Region) dev_set_color ('green') dev_display (RegionAffineTrans)

(三)实例2
read_image (Image, 'E:/Halcon/算法/09几何变换/仿射变换/hogn.jpg')
dev_close_window()
dev_open_window_fit_image(Image, 0, 0, -1, -1, WindowHandle) dev_display(Image)
*预处理
threshold (Image, Region, 0, 200)
opening_circle (Region, Region, 1.5)
connection (Region, ConnectedRegions)
select_shape_std (ConnectedRegions, Region, 'max_area', 70)
*得到长条区域的中心点