算法逻辑:原图转3通道并转为HSV控件,看哪个图更适合进行车牌识别,进行阈值分割,然后把获得的区域进行合并并且通过OCR识别库识别。
1 dev_open_window (0, 0, 512, 512, 'black', WindowHandle) 2 dev_open_file_dialog ('read_image', 'default', 'default', Selection) 3 read_image (Image, Selection) 4 *图像反色 5 invert_image (Image, ImageInvert) 6 7 *转3通道并转为hsv空间 8 decompose3 (ImageInvert, R, G, B) 9 trans_from_rgb (R, G, B, H, S, V, 'hsv') 10 *分割 11 threshold (S, Regions, 130, 255) 12 connection (Regions, ConnectedRegions) 13 *获取 14 select_shape (ConnectedRegions, SelectedRegions, ['area','row'], 'and', [70,135.73], [95,195.9]) 15 *整合 16 union1 (SelectedRegions, RegionUnion) 17 *包含 18 shape_trans (RegionUnion, RegionTrans, 'rectangle2') 19 20 *获得Phi 21 orientation_region (RegionTrans, Phi) 22 area_center (RegionTrans, Area, Row, Column) 23 vector_angle_to_rigid (Row, Column, Phi, Row, Column, rad(180), HomMat2D) 24 * vector_angle_to_rigid (Row, Column, Phi, Row, Column, 0, HomMat2D) 25 *旋转图像 26 affine_trans_image (Image, ImageAffinTrans, HomMat2D, 'constant', 'false') 27 *旋转区域,让车牌摆正,以便于之后的识别 28 affine_trans_region (RegionTrans, RegionAffineTrans, HomMat2D, 'nearest_neighbor') 29 * rotate_image (RegionAffineTrans, ImageRotate1, 180, 'constant') 30 *获取区域图像 31 reduce_domain (ImageAffinTrans, RegionAffineTrans, ImageReduced) 32 * rotate_image (ImageReduced, ImageRotate2, 180, 'constant') 33 *转灰度 34 rgb1_to_gray (ImageReduced, GrayImage) 35 *旋转180 36 * rotate_image (GrayImage, ImageRotate3, 180, 'constant') 37 38 threshold (GrayImage, Region1, 77, 252) 39 *获取所有个体 40 connection (Region1, ConnectedRegions1) 41 select_shape (ConnectedRegions1, SelectedRegions1, 'area', 'and', 63.76, 500) 42 43 sort_region (SelectedRegions1, SortedRegions, 'character', 'true', 'Column') 44 *用OCR识别库识别 45 read_ocr_class_mlp ('Industrial_0-9A-Z_NoRej.omc', OCRHandle) 46 do_ocr_multi_class_mlp (SortedRegions, ImageInvert, OCRHandle, Class, Confidence) 47 dev_display (Image) 48 disp_message (WindowHandle, Class, 'window', 0, 0, 'black', 'true')
流程图: