1. 程式人生 > 其它 >邊緣提取二—例項

邊緣提取二—例項

 1 read_image (DoubleCircle, 'E:/學習/Halcon/玩套路之邊緣檢測/玩套路之邊緣檢測/DoubleCircle/double_circle.png')
 2 
 3 *獲取ROI區域
 4 threshold (DoubleCircle, Regions, 0, 39)
 5 connection(Regions, ConnectedRegions)
 6 select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 99687.5, 200000)
 7 *形態學處理
 8 dilation_circle(SelectedRegions, RegionDilation, 5.5
) 9 * erosion_circle(SelectedRegions, RegionErosion, 5.5) 10 * closing_circle(SelectedRegions, RegionClosing, 15.5) 11 12 * difference(RegionDilation, RegionErosion, RegionDifference) 13 *fill_up(RegionDifference, RegionFillUp) 14 closing_circle(SelectedRegions, RegionClosing, 5.5) 15 difference(RegionDilation, RegionClosing, RegionDifference)
16 17 reduce_domain(DoubleCircle, RegionDifference, ImageReduced) 18 19 edges_sub_pix(ImageReduced, Edges, 'canny',1.5, 5, 40) 20 smooth_contours_xld(Edges, SmoothedContours, 3) 21 segment_contours_xld(SmoothedContours, ContoursSplit, 'lines_circles', 5, 4, 2) 22 count_obj(ContoursSplit, Number) 23 dev_clear_window()
24 dev_display(ImageReduced) 25 dev_display(ContoursSplit) 26 for I:=0 to Number-1 by 1 27 select_obj(ContoursSplit, ObjectSelected, I+1) 28 get_contour_global_attrib_xld(ObjectSelected, 'cont_approx', Attrib) 29 if(Attrib == -1) 30 fit_line_contour_xld(ObjectSelected, 'tukey', -1, 0, 5, 2, RowBegin, ColBegin, RowEnd, ColEnd, Nr, Nc, Dist) 31 dev_set_color('red') 32 disp_line(3600, RowBegin, ColBegin, RowEnd, ColEnd) 33 elseif(Attrib == 1) 34 fit_circle_contour_xld(ObjectSelected, 'algebraic', -1, 0, 0, 3, 2, Row, Column, Radius, StartPhi, EndPhi, PointOrder) 35 dev_set_color('green') 36 dev_set_draw('margin') 37 gen_circle(Circle, Row, Column, Radius) 38 endif 39 endfor

 

 此例就是按照上篇方法對輪廓的提取,

edges_sub_pix(ImageReduced, Edges, 'canny',1.5, 5, 40) 此運算元,引數如何設定沒有太多的理解。
get_contour_global_attrib_xld,運算元第一次使用,感覺不同於上篇中提到的get_contour_attrib_xld,需要加強理解,比那個好用。