对于倾斜的车牌,我们必须用仿射变换,将车牌弄正,再进行识别。如图
halcon代码
read_image (Image666, 'C:/Users/Administrator/Desktop/666.jpg')
decompose3 (Image666, Red, Green, Blue)
trans_from_rgb (Red, Green, Blue, Hue, Saturation, Intensity, 'hsv')
threshold (Saturation, Regions, 86, 255)
*
* union1 (Regions, RegionUnion)
opening_rectangle1 (Regions, RegionOpening, 8, 8)
fill_up (RegionOpening, RegionFillUp)
connection (RegionFillUp, ConnectedRegions)
shape_trans (RegionFillUp, RegionTrans, 'rectangle2')
*定位
orientation_region (RegionTrans, Phi)
area_center (RegionTrans, Area, Row, Column)
*仿射变换
vector_angle_to_rigid (Row, Column, Phi, Row, Column, -0.1, HomMat2D)
affine_trans_image (Image666, ImageAffinTrans, HomMat2D, 'constant', 'false')
affine_trans_region (RegionTrans, RegionAffineTrans, HomMat2D, 'nearest_neighbor')
*截取
reduce_domain (ImageAffinTrans, RegionAffineTrans, ImageReduced)
*分割
rgb1_to_gray (ImageReduced, GrayImage)
invert_image (GrayImage, ImageInvert1)
threshold (GrayImage, Regions1, 174, 231)
opening_rectangle1 (Regions1, RegionOpening1, 5, 5)
fill_up (RegionOpening1, RegionFillUp1)
connection (RegionFillUp1, ConnectedRegions1)
select_shape (ConnectedRegions1, SelectedRegions, ['area','height','width'], 'and', [702.75,27.982,29.266], [1697.25,90.367,70.917])
sort_region (SelectedRegions, SortedRegions, 'character', 'true', 'Column')
read_ocr_class_mlp ('Industrial_0-9A-Z_NoRej.omc', OCRHandle)
do_ocr_multi_class_mlp (SortedRegions, ImageInvert1, OCRHandle, Class, Confidence)
参考程序基本类似,只是在二值化后多了Union与膨胀操作,具体问题具体分析
参考:
https://blog.csdn.net/elie_yang/article/details/102392882