除了预处理增强图像,我再提出一个可能的方向,有关于DM码的构图原理的,猜测是打印二维码的时候二维码最外边沿留白不够,导致的识别率低,我用halcon13.0处理留白也可以全部识别,留白加预处理预计效果会更好
- list_image_files ('F:/51-i/二维码不同灰度', 'default', [], ImageFiles)
- dev_get_window (WindowHandle)
- create_data_code_2d_model ('Data Matrix ECC 200', 'default_parameters', 'maximum_recognition', DataCodeHandle)
- gen_rectangle1 (Rectangle, 200, 370, 410, 580)
- code:=[]
- for index:=0 to |ImageFiles|-1 by 1
- read_image (Image, ImageFiles[index])
- reduce_domain (Image, Rectangle, ImageReduced)
- crop_domain (ImageReduced, ImagePart)
- binary_threshold (ImagePart, Region, 'max_separability', 'light', UsedThreshold)
- connection (Region, ConnectedRegions)
- select_shape_std (ConnectedRegions, SelectedRegions, 'max_area', 70)
- shape_trans (SelectedRegions, RegionTrans, 'convex')
- difference (ImagePart, RegionTrans, RegionDifference)
- dilation_rectangle1 (RegionDifference, RegionDilation, 7, 7)
- paint_region (RegionDilation, ImagePart, ImageResult, 228, 'fill')
- find_data_code_2d (ImageResult, SymbolXLDs, DataCodeHandle, [], [], ResultHandles, DecodedDataStrings)
- tuple_strlen (DecodedDataStrings, Length)
- if(Length = 13)
- code:=[code,DecodedDataStrings]
- endif
- * stop ()
- endfor
复制代码
|