read_image (T0153a1b02bef525641, '../img/car_id.jpg')
dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
*拆分为三个通道
decompose3 (T0153a1b02bef525641, R, G, B)
*转换到hsv控件
trans_from_rgb (R, G, B, ImageResult1, ImageResult2, ImageResult3, 'hsv')
*对S空间做阈值分割
threshold (ImageResult2, Regions, 160, 255)
*用一个小的开操作去掉一些小空洞
opening_rectangle1 (Regions, RegionOpening, 2, 2)
*填充起来
fill_up (RegionOpening, RegionFillUp)
*分离成多个Region
connection (RegionFillUp, ConnectedRegions)
*特征选择下,提取到车牌区域
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 630.48, 3327.85)
*用旋转矩形框一下
shape_trans (SelectedRegions, RegionTrans, 'rectangle2')
*求矩形的角度
orientation_region (RegionTrans, Phi)
*求矩形中心点
area_center (RegionTrans, Area, Row, Column)
*求出仿射矩阵
vector_angle_to_rigid (Row, Column, Phi, Row, Column, 0, HomMat2D)
*将原图和上一步的Region都仿射变换一下
affine_trans_image (T0153a1b02bef525641, ImageAffinTrans, HomMat2D, 'constant', 'false')
affine_trans_region (RegionTrans, RegionAffineTrans, HomMat2D, 'nearest_neighbor')
*抠出对应区域
reduce_domain (ImageAffinTrans, RegionAffineTrans, ImageReduced)
*颜色反转一下,下面那个分类器只能识别白底黑字
invert_image (ImageReduced, ImageInvert)
*转灰度
rgb1_to_gray (ImageReduced, GrayImage)
***分割字符***
*阈值分割
threshold (GrayImage, Regions1, 94, 202)
*分离多区域
connection (Regions1, ConnectedRegions1)
*特征选择,这个特征选择很局限,只对于这张图
select_shape (ConnectedRegions1, SelectedRegions1, ['column','area','width'], 'and', [193.531,31.36,0], [500,143.64,18.75])
*对字符排序
sort_region (SelectedRegions1, SortedRegions, 'character', 'true', 'column')
*用个ocr的神经网络分类器
read_ocr_class_mlp ('Industrial_0-9A-Z_NoRej.omc', OCRHandle)
*运用这个分类器
do_ocr_multi_class_mlp (SortedRegions, ImageInvert, OCRHandle, Class, Confidence)
*显示,结果有点错误,仅仅学习套路
disp_message (WindowHandle, Class, 'window', 0, 0, 'blue', 'true')