Halcon可以通过最小外接矩型算子获取Retangle2的中心点坐标,角度,半长,半宽。但是却没有四个顶点坐标和四个线段中点坐标。下面的代码是获取四个顶点坐标和四个线段中点坐标的方法。
Row1:=200
Column1:=300
Phi:=-0.39
Len1:=100
Len2:=50
*获取外接最小矩形的参数
gen_rectangle2 (Rectangle, Row1, Column1, Phi, Len1, Len2)
*生成一个辅助矩形
dev_set_color ('blue')
gen_rectangle2 (Rectangle1, Row1, Column1,rad(0), Len1, Len2)
gen_cross_contour_xld (Cross, Row1, Column1, 20, 0.785398)
*求出辅助矩形的四个顶角
r1:=Row1-Len2
c1:=Column1-Len1
r2:=Row1-Len2
c2:=Column1+Len1
r3:=Row1+Len2
c3:=Column1+Len1
r4:=Row1+Len2
c4:=Column1-Len1
*根据点和角度,创建一个矩阵关系
vector_angle_to_rigid (Row1, Column1, rad(0), Row1, Column1, Phi, HomMat2D)
*对点进行仿射变换
affine_trans_point_2d (HomMat2D, r1, c1, r1, c1)
affine_trans_point_2d (HomMat2D, r2, c2, r2, c2)
affine_trans_point_2d (HomMat2D, r3, c3, r3, c3)
affine_trans_point_2d (HomMat2D, r4, c4, r4, c4)
R1:=[r1,r2,r3,r4]
C1:=[c1,c2,c3,c4]
dev_set_color ('green')
gen_cross_contour_xld (Cross1, R1, C1, 16, 0.785398)
return ()