车牌识别程序

 

*******************车牌识别程序  仅供学习使用*******
**说明:此程序识别的车牌是在网上随便找的,此程序中的二值化、形状选择和形态学处理的blob分析三步曲
**并不具有普遍性。因为位置、光照、车牌清洁状态等都会对车票识别造成很大的影响。只有使用MLP/SVM/CNN
**等人工智能算法训练的程序,才具有比较高的普适性。

**1.采集图像
read_image (Image, 'F:/7.机器视觉/Halcon/c#联合halcon开发/chepaishibie1.jpg')
dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)

*2.车牌定位及校正
**颜色转换
decompose3 (Image, Image1, Image2, Image3)
trans_from_rgb (Image1, Image1, Image1, Hue, Saturation, Intensity, 'hsv')
*二值化
threshold (Intensity, Regions, 0, 59)
connection (Regions, ConnectedRegions)
*形状选择
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 4908.26, 8944.95)
**形态学处理
union1 (SelectedRegions, RegionUnion)
dilation_rectangle1 (RegionUnion, RegionDilation, 11, 11)
fill_up (RegionDilation, RegionFillUp)
**角度变换
orientation_region (RegionFillUp, Phi)
area_center (RegionFillUp, Area, Row, Column)
vector_angle_to_rigid (Row, Column, Area, Row, Column, Area, HomMat2D)
affine_trans_image (Image, ImageAffinTrans, HomMat2D, 'constant', 'false')
affine_trans_region (RegionFillUp, RegionAffineTrans, HomMat2D, 'nearest_neighbor')

*3.抠图+字符识别
reduce_domain (ImageAffinTrans, RegionAffineTrans, ImageReduced)
rgb1_to_gray (ImageReduced, GrayImage)
invert_image (GrayImage, ImageInvert)
threshold (ImageInvert, Regions1, 56, 159)
connection (Regions1, ConnectedRegions1)
select_shape (ConnectedRegions1, SelectedRegions1, ['area','height'], 'and', [206.42,27.248], [426.61,40.275])
**给识别出来的字符串进行排序,'character'指的是按字符串的形式输出
sort_region (SelectedRegions1, SortedRegions, 'character', 'true', 'row')

*4.字符识别
read_ocr_class_mlp ('Document_0-9A-Z_NoRej.omc', OCRHandle)
do_ocr_multi_class_mlp (SortedRegions, ImageInvert, OCRHandle, Class, Confidence)

*5.显示
smallest_rectangle1 (SortedRegions, Row1, Column1, Row2, Column2)
count_obj (SortedRegions, Number)
dev_display (Image)
for Index := 0 to |Class| - 1 by 1
    **每个数字的Y坐标一样,X坐标与打印的日期对应数字的X坐标值-3
    disp_message (WindowHandle, Class[Index], 'image', 210, Column2[Index] - 3, 'green', 'false')
endfor

 

程序原图如下:

运行结果如下:

        程序开头讲过,blob分析只能适用于条件稳定且合适的情况。一旦条件发生变化,很有可能出现错识别的情况。当然,人工智能算法也不是100%的准确,但是人工智能算法起码可以降低开发和调试的难度,blob分析是需要大量的打光测试和代码调整才能找到暂时合适的方法。而人工智能算法可以一劳永逸,虽然设计算法的时候有一定的难度,但是,一旦成功就可以很高效地移植到其它项目中。这种轻松不是说代码量或者工作量少,而是后期的维护成本很低,非标设备行业的人力成本和出差费用是十分昂贵的。
 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值