项目需求:
此项目halcon检测检测定位角度问题,并显示。
素材如下:
检测后的效果如下:
read_image (Image, '123')
get_image_size (Image, Width, Height)
dev_close_window ()
dev_open_window (0, 0, 900, 500, 'light gray', WindowID)
dev_set_draw ('fill')
dev_display (Image)
read_image (Image, '123')
edges_sub_pix (Image, Edges, 'canny', 0.6, 30, 40)
segment_contours_xld (Edges, ContoursSplit, 'lines_circles', 6, 4, 4)
dev_display (ContoursSplit)
count_obj (ContoursSplit, NumSegments)
dev_display (Image)
NumCircles := 0
RowsCenterCircle := []
ColumnsCenterCircle := []
dev_display (Image)
for i := 1 to NumSegments by 1
select_obj (ContoursSplit, SingleSegment, i)
get_contour_global_attrib_xld (SingleSegment, 'cont_approx', Attrib)
if (Attrib == 1)
NumCircles := NumCircles + 1
fit_circle_contour_xld (SingleSegment, 'atukey', -1, 2, 0, 5, 2, Row, Column, Radius, StartPhi, EndPhi, PointOrder)
gen_circle_contour_xld (ContCircle, Row, Column, Radius, 0, rad(360), 'positive', 1)
RowsCenterCircle := [RowsCenterCircle,Row]
ColumnsCenterCircle := [ColumnsCenterCircle,Column]
dev_display (ContCircle)
endif
endfor
gen_cross_contour_xld (Cross, RowsCenterCircle[1], ColumnsCenterCircle[1], 6, 0.785398)
gen_cross_contour_xld (Cross1, RowsCenterCircle[2], ColumnsCenterCircle[2], 6, 0.785398)
distance_pp (RowsCenterCircle[1], ColumnsCenterCircle[1], RowsCenterCircle[2], ColumnsCenterCircle[2], Distance_2_3)
gen_region_line (RegionLines, RowsCenterCircle[1], ColumnsCenterCircle[1], RowsCenterCircle[2], ColumnsCenterCircle[2])
angle_lx (RowsCenterCircle[1], ColumnsCenterCircle[1],\
RowsCenterCircle[2], ColumnsCenterCircle[2], Angle)
tuple_deg (Angle, Deg)
disp_message (WindowID,'角度:'+ Deg, 'Image', RowsCenterCircle[1], ColumnsCenterCircle[1], 'green', 'false')