1. 程式人生 > 其它 >halcon獲得矩形的四個端點和邊的中點座標

halcon獲得矩形的四個端點和邊的中點座標

CenterX:=Parameter[1]
CenterY:=Parameter[0]
JXPhi:=Parameter[2]
Len1:=Parameter[3]
Len2:=Parameter[4]

*矩形端點座標變數,變中心座標變數初始化
CornerX:=[]
CornerY:=[]
LineCenterY:=[]
LineCenterX:=[]
*臨時變數初始化
RowT:=0
ColT:=0
*判斷仿射矩形是否有效
if (Len1<=0 or Len2<=0)
return ( )
endif
*計算仿射矩形角度的正弦,餘弦
tuple_cos(JXPhi,Cos)
tuple_sin(JXPhi,Sin)
*矩形第一個端點
ColT:=CenterX-Len1*Cos-Len2*Sin
RowT:=CenterY-(-Len1*Sin+Len2*Cos)
CornerY:=[CornerY,RowT]
CornerX:=[CornerX,ColT]
*矩形第二個端點
ColT:=CenterX+Len1*Cos-Len2*Sin
RowT:=CenterY-(Len1*Sin+Len2*Cos)
CornerY:=[CornerY,RowT]
CornerX:=[CornerX,ColT]
*矩形第三個端點
ColT:=CenterX+Len1*Cos+Len2*Sin
RowT:=CenterY-(Len1*Sin-Len2*Cos)
CornerY:=[CornerY,RowT]
CornerX:=[CornerX,ColT]
*矩形第四個端點
ColT:=CenterX-Len1*Cos+Len2*Sin
RowT:=CenterY-(-Len1*Sin-Len2*Cos)
CornerY:=[CornerY,RowT]
CornerX:=[CornerX,ColT]
*矩形第一條邊中心座標
LineCenterY[0]:=(CornerY[0]+CornerY[1])*0.5
LineCenterX[0]:=(CornerX[0]+CornerX[1])*0.5
*矩形第二條邊中心座標
LineCenterY[1]:=(CornerY[1]+CornerY[2])*0.5
LineCenterX[1]:=(CornerX[1]+CornerX[2])*0.5
*矩形第三條邊中心座標
LineCenterY[2]:=(CornerY[3]+CornerY[2])*0.5
LineCenterX[2]:=(CornerX[3]+CornerX[2])*0.5
*矩形第四條邊中心座標
LineCenterY[3]:=(CornerY[3]+CornerY[0])*0.5
LineCenterX[3]:=(CornerX[3]+CornerX[0])*0.5
return()