汽车车牌是如何识别的?ARM Linux下车牌提取过程......
扫描二维码
随时随地手机看文章
“智慧城市、智慧停车、智慧小区”的出现,随之而来的是一波波的设备更新换代,关于车辆管理这方面,包括安防、交通等行业,都纷纷用上了车牌识别技术。
作为嵌入式er,不仅要看到行业的发展趋势,也要分析分析背后的一些关键技术。下面是一位嵌入式er开发车牌识别的一些经验整理,希望对大家能有所帮助。
最近在弄车牌识别这个项目,对于机器视觉有些了解的人都知道,这个东西算是比较成熟了,在书里也有代码。 网上能找到的资料也比较多,所及借着这个机会在ARM开发板上实现以下车牌识别。
反正对于神经网络这些什么的我是不知道了,所以代码也是网上借鉴了的,我稍微整理注释了下。
首先你需要了解移植opencv到嵌入式ARM的具体的步骤,这个网上比较多,大家搜一下就可以了。
第一步做的就是车牌提取:
代码如下:
我们看下效果:
原图car.jpg,我随便拍的一张图:
看下hsv的效果图car_hsv.jpg:
接着直方图均衡化后的图car_hsv1.jpg:
提取蓝车区域后,分离出来,提取分量 car_hsvSplit.jpg:
可以看出,找到了车牌部分。我拍的这图质量还好,当车辆与车牌都是蓝色时就不好弄出这个了
接着看下形态学处理 car_morphology.jpg:
白色区域都被联通了。
然后看下旋转的图像 car_rotated.jpg:
最后,剪切出车牌即可 car_area.jpg:
这样就提取车了一张车牌。
因为这图比较理想,事实上,可能识别出多个蓝车区域多为车牌,也就是多个候选区域。这里我们图像理想,只识别出一个候选区域,所以我直接把候选区域0,即output_area[0]打印出来就是车牌了,我们应该加入SVM训练,作为最后判断是否是车牌的依据,当然,这个我们下次再说吧。