halcon xld线段中点、端点和角度的计算
一、xld线段中点
area_center_points_xld (Line4, Area, Row, Column)
二、xld线段端点
*xld转region
gen_region_contour_xld (LineContours, RegionLines, 'filled')
*提取区域轮骨
skeleton (RegionLines, Skeleton)
*获取轮骨端点
junctions_skeleton (RegionLines, EndPoints, JuncPoints)
get_region_points (EndPoints, Rows1, Columns1)
三、xld线段角度
法一:可将xld转成区域,然后求区域的方向
gen_region_contour_xld (LineContours, RegionLines, 'filled')
orientation_region (RegionLines, Phi)
法二:直接求xld轮廓方向
orientation_xld(XLD : : : Phi)
法三:通过求椭圆长半轴、短半轴的方式求xld轮廓(精度较高,但是方向有时会找不准)
elliptic_axis_points_xld(XLD : : : Ra, Rb, Phi)
法三:通过线段两端点的反正切来求角度(方向准确,精度较高,始终以X轴正方向为起始方向,推荐)
注:直线起始端点(Rows[0],Columns[0]),末尾端点(Rows[1],Columns[1])
offsetX := RightDownColumn - LeftUpColumn
offsetY := RightDownRow - LeftUpRow
tuple_atan2 (offsetY, offsetX, angel)
tuple_deg (angel, angelDeg)
*线段与X轴正方向的夹角
m_rotate := 180 - angelDeg