**********************************************轮廓合并:两轮廓之间连起来***********************************************************************************************************
gen_contour_polygon_xld (FirstContour, [500,1000], [1,1])
gen_contour_polygon_xld (SecondContour, [1000,500], [2000,2000])
gen_contour_polygon_xld (SecondContour1, [1000,500], [500,1001])
gen_contour_polygon_xld (SecondContour2, [1000,500], [3000,3000])
gen_contour_polygon_xld (SecondContour1, [500,1000], [500,1001])
* gen_contour_polygon_xld (SecondContour1, [1000,1000], [1000,500])
concat_obj (FirstContour, SecondContour1, ConcatContour)
concat_obj(ConcatContour, SecondContour, ConcatContour)
concat_obj(ConcatContour, SecondContour2, ConcatContour)
*返回轮廓的长度
distance_cc(ConcatContour, ConcatContour, 'point_to_segment', DistanceMin, DistanceMax)
*返回轮廓方向,起始点在终点下方时 :Phi>0
orientation_points_xld(ConcatContour, Phi)
*****************************union_straight_contours_xld**************************************************
*****************************合并具有相似方向的相邻直线轮廓
*计算XLD轮廓的回归线参数,并返回定义属性的轮廓
regress_contours_xld (ConcatContour, RegressContours, 'drop', 1)
*如果要避免平行轮廓合并的情况,则必须选择Mode=“noparallel”,否则Mode=“paralletoo”即可。
*对于Mode=“every”,轮廓将无条件合并。在这种情况下,所有其他参数都没有影响。
union_straight_contours_xld(RegressContours, UnionContours5, 5, rad(1), 50, 'every', 'maximum')
*((两线D)/MaxD:500)*Per:100+((两线方向差)/rad(1))(100-Per:100)<=100即可
*Per=100时 无论方向差多少都会合并,只受MaxDist(距离)限制
union_straight_contours_xld (RegressContours, UnionContours, 500, rad(1), 100, 'paralleltoo', 'maximum')
*((两线D)/MaxD:1)*Per:0+((两线方向差)/rad(1))(100-Per:0)<=100即可
*Per=0时 无论距离差多少都会合并,只受MaxDiff(方向)限制
union_straight_contours_xld (RegressContours, UnionContours1, 1, rad(1), 0, 'paralleltoo', 'maximum')
*返回合并轮廓一般是连接两轮廓的最近两端点
******************************************************************************************
gen_empty_obj(ConcatContour)
**************************************union_collinear_contours_xld*************************************************
*************************************合并位于同一条直线上的轮廓
*生成轮廓的区别
* gen_contour_region_xld()
* gen_contours_skeleton_xld()
gen_contour_polygon_xld (FirstContour, [1100,1100], [1,100])
gen_contour_polygon_xld (SecondContour, [1000,1000], [200,1000])
gen_contour_polygon_xld (SecondContour1, [1000,1000], [1,100])
* gen_contour_polygon_xld (SecondContour2, [1000,500], [3000,3000])
* gen_contour_polygon_xld (SecondContour1, [500,1000], [500,1001])
* gen_contour_polygon_xld (SecondContour1, [1000,1000], [1000,500])
concat_obj (FirstContour, SecondContour, ConcatContour)
* concat_obj(ConcatContour, SecondContour1, ConcatContour)
* concat_obj(ConcatContour, SecondContour2, ConcatContour)
*
MaxDAbs:=110 //两直线法线之间的最短距离D <MaxDAbs
MaxDRel:=1 //D/轮廓回归线长度L <MaxDRel
MaxShift:=101 //两直线的平行距离S <MaxShift
MaxAng:=0.1 //轮廓的角度差A <MaxAng
Mode:='attr_keep' //所有属性都复制到输出轮廓。'attr_forget' :输出轮廓将不包含任何属性。
union_collinear_contours_xld(ConcatContour, UnionContours2, MaxDAbs, MaxDRel,\
MaxShift, MaxAng, 'attr_keep')
*查看轮廓属性
query_contour_attribs_xld(UnionContours2, Attribs)
********************************************************************************************
gen_empty_obj(ConcatContour)
****************************union_straight_contours_histo_xld*********************************
***************************合并到给定线 有相似距离的 相邻直线轮廓
gen_contour_polygon_xld (FirstContour, [500,1000], [1,1])
gen_contour_polygon_xld (SecondContour, [1000,500], [2000,2000])
gen_contour_polygon_xld (SecondContour1, [1000,500], [500,1001])
gen_contour_polygon_xld (SecondContour2, [1000,500], [3000,3000])
gen_contour_polygon_xld (SecondContour1, [500,1000], [500,1001])
* gen_contour_polygon_xld (SecondContour1, [1000,1000], [1000,500])
concat_obj (FirstContour, SecondContour, ConcatContour)
* concat_obj(ConcatContour, SecondContour1, ConcatContour)
concat_obj(ConcatContour, SecondContour2, ConcatContour)
*计算XLD轮廓的回归线参数,并返回定义属性的轮廓
regress_contours_xld (ConcatContour, RegressContours, 'drop', 1)
*Rsta
*Csta
*Rend
*Cend
*最大距离
*两个最小值之间的最大宽度。
*平滑大小
union_straight_contours_histo_xld(RegressContours, UnionContours3, SelectedContours, 500, 1, 1000, 1, 1, 1, 1, HistoValues)
******************************搞不懂*******************************************
gen_empty_obj(ConcatContour)
*****************************************union_adjacent_contours_xld**********************************
**************************************合并端点靠近轮廓连接在一起的轮廓
gen_contour_polygon_xld (FirstContour, [500,1000], [1,1])
gen_contour_polygon_xld (SecondContour, [1000,500], [2000,2000])
* gen_contour_polygon_xld (SecondContour1, [1000,500], [500,1001])
gen_contour_polygon_xld (SecondContour2, [1000,500], [3000,3000])
* gen_contour_polygon_xld (SecondContour1, [500,1000], [500,1001])
* gen_contour_polygon_xld (SecondContour1, [1000,1000], [1000,500])
concat_obj (FirstContour, SecondContour, ConcatContour)
* concat_obj(ConcatContour, SecondContour1, ConcatContour)
concat_obj(ConcatContour, SecondContour2, ConcatContour)
MaxDAbs:=2020 //两直线法线之间的最短距离D <MaxDAbs
MaxDRel:=10 //D/轮廓回归线长度L <MaxDRel
Mode:='attr_keep' //所有属性都复制到输出轮廓。'attr_forget' :输出轮廓将不包含任何属性。
union_adjacent_contours_xld(ConcatContour, UnionContours4, 2020, 10, 'attr_keep')
****************************************************************************************************************
gen_empty_obj(ConcatContour)
********************************union2_closed_contours_xld**********
**********************************计算闭合轮廓的并集******************
gen_contour_polygon_xld (FirstContour, [500,1000], [1,1])
gen_contour_polygon_xld (SecondContour, [1000,500], [2000,2000])
close_contours_xld(SecondContour, SecondContour)
close_contours_xld(FirstContour, FirstContour)
gen_polygons_xld(FirstContour, Polygons, 'ramer', 2)
gen_polygons_xld(SecondContour, Polygons1, 'ramer', 2)
union2_closed_polygons_xld(Polygons, Polygons1, PolygonsUnion)
union2_closed_contours_xld(FirstContour, SecondContour, ContoursUnion)
************************************************************************************
halcon轮廓算法之合并的理解
最新推荐文章于 2025-03-08 21:32:37 发布