halcon仿射变换demo

Posted 洪流之源

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了halcon仿射变换demo相关的知识,希望对你有一定的参考价值。

1. 对区域进行平移、旋转、缩放

* 对区域region进行仿射变换
read_image (Image, '3.PNG')
rgb1_to_gray (Image, GrayImage)
binary_threshold (GrayImage, Region, 'max_separability', 'dark', UsedThreshold)
area_center (Region, Area, Row, Column)

* 仿射变换-平移
hom_mat2d_identity (HomMat2DIdentity1)
* 计算将region按照x轴方向移动100的变换矩阵
hom_mat2d_translate (HomMat2DIdentity1, 100, 0, HomMat2DTranslate)
affine_trans_region (Region, RegionAffineTrans1, HomMat2DTranslate, 'nearest_neighbor')

* 仿射变换-旋转
hom_mat2d_identity (HomMat2DIdentity)
* 计算按照region中心点旋转90度的变换矩阵
hom_mat2d_rotate (HomMat2DIdentity, rad(90), Row, Column, HomMat2DRotate)
affine_trans_region (Region, RegionAffineTrans, HomMat2DRotate, 'nearest_neighbor')

* 仿射变换-缩放
hom_mat2d_identity (HomMat2DIdentity2)
* 计算按照region中心点缩放一半的变换矩阵
hom_mat2d_scale (HomMat2DIdentity2, 0.5, 0.5, Row, Column, HomMat2DScale)
affine_trans_region (Region, RegionAffineTrans2, HomMat2DScale, 'nearest_neighbor')

* 仿射变换-平移-旋转-缩放
hom_mat2d_identity (HomMat2DIdentity3)
* 计算将region按照x轴方向移动100的变换矩阵
hom_mat2d_translate (HomMat2DIdentity3, 100, 0, HomMat2DTranslate1)
* 计算按照region中心点旋转90度的变换矩阵
hom_mat2d_rotate (HomMat2DTranslate1, rad(90), Row, Column, HomMat2DRotate1)
* 计算按照region中心点缩放一半的变换矩阵
hom_mat2d_scale (HomMat2DRotate1, 0.5, 0.5, Column, Row, HomMat2DScale1)
affine_trans_region (Region, RegionAffineTrans3, HomMat2DScale1, 'nearest_neighbor')

* 计算按照region中心点x轴方向移动100,旋转90度的变换矩阵
vector_angle_to_rigid (Row, Column, rad(0), Row + 100, Column, rad(90), HomMat2D)
affine_trans_region (Region, RegionAffineTrans4, HomMat2D, 'nearest_neighbor')

2. 仿射变换的追踪定位

read_image (Image, 'C:/Users/JOVISION/Desktop/halcon_demo/4.PNG')
* 原始的矩形区域
gen_rectangle2 (Rectangle, 50, 70, rad(45), 50, 20)
* 原始的圆形区域
gen_circle (Circle, 80, 90, 30)
* 平移、旋转后的矩形区域
gen_rectangle2 (Rectangle1, 190, 100, rad(90), 50, 20)
* 计算矩形区域旋转变换矩阵
vector_angle_to_rigid (50, 70, rad(45), 190, 100, rad(90), HomMat2D)
* 对圆形区域做仿射变换
affine_trans_region (Circle, RegionAffineTrans, HomMat2D, 'nearest_neighbor')

以上是关于halcon仿射变换demo的主要内容,如果未能解决你的问题,请参考以下文章

halcon的仿射变换问题

halcon 仿射变换

halcon几何变换(仿射变换)

Halcon二维仿射变换实例探究

Halcon 学习笔记3 仿射变换

Halcon如何保存仿射变换矩阵