拟合圆,拟合直线,拟合其它形状,原理都差不多.掌握一种方法,其它都差不多.
直接上干货代码,废话不多说
list_files (‘circle’, ‘follow_links’, Files)
list_image_files (‘.’,[] ,[] , ImageFiles)
FileCount:=|ImageFiles|-1
for i:=0 to FileCount by 1
read_image (Circle, ImageFiles[i])
mean_image (Circle, ImageMean, 3, 3)
scale_image (ImageMean, ImageScaled, 1.38587, -98)
edges_sub_pix (ImageScaled, Edges1, ‘canny’, 6, 10, 30)
segment_contours_xld (Edges1, ContoursSplit, ‘lines_circles’, 5, 4, 2)
union_adjacent_contours_xld (ContoursSplit, UnionContours, 10, 1, ‘attr_keep’)
select_shape_xld (UnionContours, SelectedXLD, ‘max_diameter’, ‘and’, 158.6, 190.79)
select_shape_xld (SelectedXLD, SelectedXLD1, [‘max_diameter’,‘circularity’], ‘and’, [156.6,0.67799], [190.79,2])
fit_circle_contour_xld (SelectedXLD1, ‘geotukey’, -1, 0, 0, 3, 2, Row, Column, Radius, StartPhi, EndPhi, PointOrder)
gen_circle_contour_xld (ContCircle, Row, Column, Radius, StartPhi, EndPhi, ‘positive’, 1)
union_cocircular_contours_xld (ContCircle, UnionContours1, StartPhi, StartPhi, StartPhi, 30, 10, 10, ‘true’, 1)
union2_closed_contours_xld (UnionContours1, SelectedXLD1, ContoursUnion)
fit_circle_contour_xld (ContoursUnion, ‘geotukey’, -1, 0, 0, 3, 2, Row1, Column1, Radius1, StartPhi1, EndPhi1, PointOrder1)
gen_circle_contour_xld (ContCircle1, Row1, Column1, Radius1, StartPhi1, EndPhi1, ‘positive’, 1)
gen_cross_contour_xld (Cross, Row1, Column1, 16, StartPhi1)
dev_display (Circle)
dev_set_line_width (3)
dev_display (Cross)
dev_display (ContCircle1)
stop()
endfor