- * Image Acquisition 01: Code generated by Image Acquisition 01
- list_files ('C:/Users/zazaniao/Desktop/51halcon划痕图像', ['files','follow_links'], ImageFiles)
- tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)
- ,'ignore_case'], ImageFiles)
- for Index := 0 to |ImageFiles| - 1 by 1
- read_image (Image, ImageFiles[Index])
- * Image Acquisition 01: Do something
- *分割,得到圆环区域,用作检测ROI
- threshold (Image, Regions, 145, 255)
-
- connection (Regions, ConnectedRegions)
- select_shape_std (ConnectedRegions, SelectedRegions, 'max_area', 70)
- closing_circle (SelectedRegions, RegionClosing, 3.5)
- fill_up_shape (RegionClosing, ROI, 'area', 1, 100)
-
- *裂缝分割
- median_image (Image, ImageMedian, 'circle', 5, 'mirrored')
- dyn_threshold (Image, ImageMedian, RegionDynThresh, 14, 'dark')
-
- connection (RegionDynThresh, ConnectedRegions1)
- intersection (ConnectedRegions1, ROI, RegionIntersection)
-
- connection (RegionIntersection, ConnectedRegions2)
-
- select_shape (ConnectedRegions2, SelectedRegions1, 'area', 'and', 20, 99999)
- union1 (SelectedRegions1, RegionUnion)
- connection (RegionUnion, ConnectedRegions3)
-
- dev_display (Image)
- select_shape (ConnectedRegions3, SelectedRegions2, 'rect2_len1', 'and', 15, 99999)
-
- *对区域进行特征筛选:裂缝的方向一般指向或者背离圆心
- count_obj (SelectedRegions2, Number)
- gen_empty_obj (Obj)
- area_center (ROI, Area, Row, Column)
- AngleOffset:=rad(30)
- for i:=1 to Number by 1
- select_obj (SelectedRegions2, ObjectSelected, i)
- smallest_rectangle2 (ObjectSelected, Row2, Column2, Phi, Length1, Length2)
- area_center (ObjectSelected, Area1, Row1, Column1)
- angle_lx (Row, Column, Row1, Column1, Angle1)
- angle_lx (Row1, Column1, Row, Column, Angle2)
- if(abs(Phi-Angle1)<AngleOffset or abs(Phi-Angle2)<AngleOffset)
- concat_obj (Obj, ObjectSelected, Obj)
- endif
- endfor
-
- *对裂缝合并
- union1 (Obj, RegionUnion1)
- closing_circle (RegionUnion1, RegionClosing2, 273.5)
- dev_display (Image)
- dev_display (RegionClosing2)
- stop ()
- endfor
复制代码 |