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

posted @ 2024-05-17 23:19  wwwsssq  阅读(395)  评论(0编辑  收藏  举报