这样的话差分确实就不太行,自动阈值也可以试一下- read_image (Image, 'C:/Users/Administrator/Downloads/3-环.bmp')
- gen_rectangle1 (ROI_0, 81.3791, 849.227, 121.466, 938.446)
- reduce_domain (Image, ROI_0, ImageReduced)
- crop_domain (ImageReduced, Template)
- create_ncc_model (Template, 'auto', rad(0), rad(0), 'auto', 'use_polarity', ModelID)
- find_ncc_model (Image, ModelID, rad(0), rad(0), 0.6, 255, 0.5, 'true', 0, Row, Column, Angle, Score)
- get_image_size (Template, Width, Height)
- NumMatches := |Row|
- gen_empty_obj (MatchesRegion)
- for i := 0 to NumMatches-1 by 1
- gen_rectangle2 (Rectangle, Row[i], Column[i], Angle[i], Width/2.0, Height/2.0)
- erosion_circle (Rectangle, RegionErosion, 9)
- reduce_domain(Image, RegionErosion, ImageReduced)
-
- mean_image(ImageReduced, ImageMean, 15, 15)
- dyn_threshold(ImageReduced, ImageMean, RegionDiff, 40, 'not_equal')
- intersection(RegionErosion, RegionDiff, FinalRegion)
- connection (FinalRegion, ConnectedRegions)
- select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 10, 99999)
- concat_obj (MatchesRegion, SelectedRegions, MatchesRegion)
- endfor
复制代码
|