这个特征不明显,最好换种打光方式,只有一张图,不知道鲁棒性高不高。
- dev_update_off ()
- dev_close_window ()
- read_image (Image, 'E:/Users/laihuaxun/Desktop/halcon 学习资料/TEST Image/143120c5bjyllbndv7bv5h.png')
- get_image_size (Image, Width, Height)
- dev_open_window (0, 0, Width/2, Height/2, 'black', WindowHandle)
- rgb1_to_gray (Image, GrayImage)
- dev_display (GrayImage)
- *找到产品
- threshold (GrayImage, Region, 0, 240)
- connection (Region, ConnectedRegions)
- select_shape (ConnectedRegions, SelectedRegions, ['area','outer_radius'], 'and', [50000,200], [200000,300])
- count_obj (SelectedRegions, Number)
- if (Number#1)
- stop()
- endif
- reduce_domain (GrayImage, SelectedRegions, ImageReduced)
- *找扇形区域
- threshold (ImageReduced, Regions, 50, 240)
- connection (Regions, ConnectedRegions1)
- select_shape (ConnectedRegions1, SelectedRegions1, ['area','outer_radius'], 'and', [10000,100], [20000,200])
- closing_circle (SelectedRegions1, RegionClosing, 5.5)
- opening_circle (RegionClosing, RegionOpening, 3.5)
- union1 (RegionOpening, RegionUnion)
- reduce_domain (GrayImage, RegionUnion, ImageReduced1)
- *锐化
- emphasize (ImageReduced1, ImageEmphasize, 91, 91, 1)
- *找缺陷区域xld
- lines_gauss (ImageEmphasize, Lines, 1.5, 3, 8, 'light', 'true', 'bar-shaped', 'true')
- *剔除长度短的XLD
- select_contours_xld (Lines, SelectedContours1, 'contour_length', 20, 500, -0.5, 0.5)
- *合并相临的XLD
- union_adjacent_contours_xld (SelectedContours1, UnionContours, 10, 1, 'attr_keep')
- *再次按长度筛选XLD
- select_contours_xld (UnionContours, SelectedContours, 'contour_length', 100, 500, -0.5, 0.5)
- *XLD转Region
- gen_region_contour_xld (SelectedContours, Region1, 'filled')
- dev_set_draw ('margin')
- dev_set_line_width (2)
- dev_display (GrayImage)
- dev_display (Region1)
复制代码
|