面向Python基于OpenCV的模板匹配法实现车牌检测与识别
如今,中国正成为世界机器视觉发展最活跃的地区之一,应用范围涵盖了工业、农业、医药、军事、航天、气象、天文、公安、交通、安全、科研等国民经济的各个行业。那么机器视觉具体能做什么呢?它出现在我们身边的那些场景呢?伴着这个疑问,请观看本文如何利用机器视觉技术实现车牌的检测与识别。
首先,我们需要确定车牌在目标图片的什么位置。通过对目标图片进行滤波、灰度、Sobel算子边缘检测、自适应阈值处理、闭运算、膨胀、腐蚀、轮廓检测等一系列形态学操作。利用车牌的特定长宽比锁定车牌位置并截取出来。

当我们检测截取到了车牌的图像。下一步我们需要做的是分割车牌,获取单个车牌字符图片,为接下来的模板匹配识别字符做准备。如何将每个字符都准确分割出来呢?同样的,首先经过滤波去除噪声、灰度处理,接着利用膨胀、腐蚀、自适应阈值处理,初步将单个字符连成一团,然后对其进行轮廓检测获取每个图形的坐标。利用该坐标信息反映出的长宽比数据将车牌单个字符分辨出来。

当拥有了单个字符图像,我们便可以利用车牌字符模板与其匹配。首先进行滤波、灰度处理、自适应阈值处理。将处理得到的结果与模板进行匹配比较。通过计算字符图像与模板的相似度,选取相似度最高的模板标签作为识别字符的输出结果。由此一来,我们便得到了单个车牌字符的识别结果。

下图为部分用来匹配字符‘1’的模板:

可以利用上述方法对每个字符进行模板匹配识别。

最终的处理效果如下:
目标图片:

程序运行结果:

本文为大家分享了机器视觉检测与识别车牌的一种思路,首先对目标图像进行常规的预处理像高斯滤波、中值滤波去除噪声。接着利用车牌目标本身特定的长宽比锁定车牌具体位置。而获取图像轮廓边缘进而求得长宽比的方法多种多样,本次分享利用Sobel算子进行边缘检测然后通过膨胀、腐蚀等形态学操作去除多余轮廓和毛刺。最后进行轮廓检测,获取每个轮廓的坐标信息。此时,我们可以利用坐标信息转换为轮廓的长宽比信息。如此,从目标图片截取车牌图片的问题就迎刃而解了。
成功截取车牌图片后我们的思路是:将车牌中的每一个字符分割,单独存放,为后续进行的模板匹配识别提供方便。还是仿照上面截取车牌的大致思路,经过预处理和进一步形态学处理后检测轮廓。同样利用长宽比和检测出来的坐标信息分割出车牌的单个字符并保存。
经过上面两步,我们已经获得了单个字符的图片,此时我们利用已经准备好的模板库,与之进行特征值运算比较。与字符图片相似度最高的模板标签即为,模板识别的输出结果。按照相同的方法识别余下字符,并将他们打印出来,这就是整个工程文件所实现的效果,将目标图片车辆的车牌号识别并打印出来。
最后感谢你的浏览,希望对你的学习能有帮助。下面附上运行效果展示视频!





