*区域的仿射变换
*affine_trans_region函数不能独自操作,需要为其提供交换所需的交换模型,
*这些变换模型可以了解halcon所对应的变换操作,如旋转、比例缩放、拉伸等操作,
*具体可以参见下面的交换流程,这些二维变换操作能够帮忙我们是想区域的任意变换操作
*-hom_mat2d_rotate(旋转)
*-hom_mat2d_scale (缩放)
*hom_mat2d_identity--->- ------>affine_trans_region
*-hom_mat2d_translate (平移)
*-hom_mat2d_slant (斜切)
*这里我们提供一个例子,简述二维任意变换的一个简要操作,同时需要留意是矩形的二维变换提供了三个函数,
*首先需要创建一个二维变换矩阵,然后对该矩阵进行旋转变换,之后再进行缩放交互操作
*完成之后通过调用affine_trans_region函数获取任意二维变换的转换操作
dev_get_window(WindowHandle)
draw_region(Region,WindowHandle)
*构建齐次二维变换矩阵
*定义一个对角为 1 的 单位矩阵,它和任何矩阵相乘等于原矩阵本身。
hom_mat2d_identity(HomMat2DIdentity)
*在变换矩阵中添加旋转
*原型为hom_mat2d_rotate( : : HomMat2D, Phi, Px, Py : HomMat2DRotate)
hom_mat2d_rotate(HomMat2DIdentity,1.57,256,256,HomMat2DRotate)
**在变换矩阵中添加缩放
*原型为hom_mat2d_scale( : : HomMat2D, Sx, Sy, Px, Py : HomMat2DScale)
hom_mat2d_scale(HomMat2DRotate,1.5,1.5,256,256,HomMat2DScale)
*变换
*原型为affine_trans_region(Region : RegionAffineTrans : HomMat2D, Interpolate : )
affine_trans_region(Region,RegionAffineTrans,HomMat2DScale,'nearest_neighbor')
dev_clear_window()
dev_set_draw('margin')
dev_set_color('red')
dev_display(Region)
dev_set_color('green')
dev_display(RegionAffineTrans)
halcon 区域的仿射变换
最新推荐文章于 2024-07-10 11:25:12 发布