hom_mat2d_reflect 算子将关于由两点(Px,Py)和(Qx,Qy)给出的轴的反射添加到齐次2d变换矩阵HomMat2D,并返回HomMat2DReflect中的结果矩阵。
可以利用hom_mat2d_reflect生成想要的镜像变换的仿射矩阵;
read_image (Image, 'printer_chip/printer_chip_01')
area_center (Image, Area, Row, Column)
hom_mat2d_identity (HomMat2DIdentity)
* 垂直镜像
hom_mat2d_reflect (HomMat2DIdentity, Row, 0, Row, 100, HomMat2DReflect)
affine_trans_image (Image, ImageAffineTrans, HomMat2DReflect, 'constant', 'false')
xld的坐标原点和图像、region不同,这一点需要注意,我就是在这里踩了坑,镜像完后发现图像平移了一段,xld是以中心为原点的,所以hom_mat2d_reflect 的(Px,Py)通常设置(0,0);
get_shape_model_contours (ModelContours, modelID, 1)
hom_mat2d_identity (HomMat2DIdentity)
hom_mat2d_reflect (HomMat2DIdentity, 0, 0, 10, 0, HomMat2DReflect) *基于Y
*hom_mat2d_reflect (HomMat2DIdentity, 0, 0, 0, 10, HomMat2DReflect) *基于X
*hom_mat2d_reflect (HomMat2DIdentity, 0, 0, 10, 10, HomMat2DReflect) *基于对角线
affine_trans_contour_xld (ModelContours, ContoursAffineTrans, HomMat2DReflect)
感谢这两篇文章给我解惑
[1]:Halcon中的坐标系特点及XLD的镜像转换 https://www.cnblogs.com/xh6300/p/7460690.html
[2]: hom_mat2d_reflect反射(镜像)矩阵https://www.51halcon.com/forum.php?mod=viewthread&tid=5938