当前测试基本逻辑:
- read_image (Image, '20260410-102844140_2569_f18_F2109_E13500-G0-P20260410_102844078_N1_BQJC_FCE25090832.png')
- rgb1_to_gray (Image, GrayImage)
- *根据ROI裁剪检测区域
- gen_rectangle1 (ROI_0, 650.051, 1500.04, 3204.07, 3051.56)
- reduce_domain (GrayImage, ROI_0, ImageReduced)
- *最大暗区域即标签区域
- fast_threshold (ImageReduced, Region, 0, 180, 200)
- closing_rectangle1 (Region, RegionClosing, 1, 25)
- fill_up (RegionClosing, RegionFillUp)
- opening_circle (RegionFillUp, RegionOpening, 5.5)
- closing_circle (RegionOpening, RegionClosing, 5.5)
- connection (RegionClosing, ConnectedRegions)
- *标签区域转凸包
- select_shape_std (ConnectedRegions, SelectedRegions, 'max_area', 70)
- shape_trans (SelectedRegions, LabelRegion, 'convex')
- reduce_domain (ImageReduced, LabelRegion, ImageReduced1)
- *取油墨区域
- binary_threshold (ImageReduced1, Region1, 'max_separability', 'dark', UsedThreshold)
- dilation_circle (Region1, RegionDilation, 1.5)
- *无油墨区域
- difference (SelectedRegions, RegionDilation, RegionDifference)
- gray_features (RegionDifference, ImageReduced1, 'median', Value)
- *填充油墨区
- paint_region (RegionDilation, ImageReduced1, ImageResult, Value, 'fill')
- *阈值分割
- region_features (LabelRegion, 'height', Value)
- mean_image (ImageResult, ImageMean, 3, 0.5*Value)
- dyn_threshold (ImageResult, ImageMean, RegionDynThresh, 35, 'light')
- opening_circle (RegionDynThresh, RegionOpening, 3.5)
- closing_circle (RegionOpening, RegionClosing, 5.5)
- connection (RegionClosing, ConnectedRegions)
- *排除标签两端
- SideShift := 8
- region_features (LabelRegion, 'row1', Value1)
- region_features (LabelRegion, 'row2', Value2)
- region_features (LabelRegion, 'width', Value3)
- select_shape (ConnectedRegions, SelectedRegions, ['row1','row2','width'], 'and', [Value1+SideShift,0,0.2*Value3], ['max',Value2-SideShift,'max'])
- dev_display (Image)
- dev_display (SelectedRegions)
复制代码 |