halcon第四讲:玩转车牌识别

玩转车牌识别,灵活运用Blob分析,颜色空间转换,形状转换,放射变换等等识别车牌号码。

原图如下:

dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
read_image (Image, '1.jpg')
invert_image (Image, ImageInvert)

*拆分3通道并转换为hsv空间
decompose3 (Image, Red, Green, Blue)
trans_from_rgb (Red, Green, Blue, Hue, Saturation, Intensity, 'hsv')

*利用饱和度图像进行二值化和特征选择
threshold (Saturation, Regions, 15, 50)
connection (Regions, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, ['area','row'], 'and', [80,135.73], [195.9,168.38])

*联合连通域形成一个区域,并用一个带方向的矩形进行形状转换
union1 (SelectedRegions, RegionUnion)
shape_trans (RegionUnion, RegionTrans, 'rectangle2')

*做仿射变化(校正)
orientation_region (RegionTrans, Phi)
area_center (RegionTrans, Area, Row, Column)
vector_angle_to_rigid (Row, Column, Phi, Row, Column,0, HomMat2D)
affine_trans_image (Image, ImageAffinTrans, HomMat2D, 'constant', 'false')
affine_trans_region (RegionTrans, RegionAffineTrans, HomMat2D, 'nearest_neighbor')

*用校正的区域去校正的原图中抠图,扣出车牌区域
reduce_domain (ImageAffinTrans, RegionAffineTrans, ImageReduced)
rgb1_to_gray (ImageReduced, GrayImage)
threshold (GrayImage, Regions1, 77, 252)
connection (Regions1, ConnectedRegions1)
select_shape (ConnectedRegions1, SelectedRegions1, 'area', 'and', 63.76, 500)

sort_region (SelectedRegions1, SortedRegions, 'character', 'true', 'column')

*读取模型并识别显示
read_ocr_class_mlp ('Industrial_0-9A-Z_NoRej.omc', OCRHandle)
do_ocr_multi_class_mlp (SortedRegions, ImageInvert, OCRHandle, Class, Confidence)
dev_display (Image)
disp_message (WindowHandle, Class, 'window', 0, 0, 'black', 'true')

校正后的图像如下:

识别结果如下:

猜你喜欢

转载自blog.csdn.net/qq_24946843/article/details/82020907