打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
人工智能|车牌定位简介
问题描述
1.当拍摄一张包含车牌信息的照片时,往往还含有一些不必要的信息,这些信息在人眼中很容易被过滤,但是对于电脑来说,分辨出非有用信息是非常困难的,所以需要为电脑设计一些方法,帮助它去除无用信息,也就是提取需要的车牌区域。
解决方案
2.1 方法原理
提取车牌区域的原理是先将图片中车牌区域的轮廓表示出来,再去除一些不必要的区域,然后将轮廓连通的区域进行填充,最后利用车牌的面积、长宽比例的特点,将车牌区域在原图中划分出来
2.2 步骤
2.2.1图像预处理
图像预处理主要是对图像灰度化和二值化,灰度化图像后更有利于不必要信息的去除,在选择灰度化方法时,可以采用电视工业标准,二值化后的图像则有利于Canny算法的轮廓提取。
2.2.2提取轮廓边缘
边缘的提取主要是采用Canny算法,将图像区域中边缘点提取出来,Canny算法的图像增强步骤中有几种专门的算子,对于车牌区域的提取,一般选用soble算子。
2.2.3去除部分轮廓
去除部分轮廓的原理是先通过闭操作将图像的轮廓进行填充,再通过开操作将图像中的不满足车牌区域特点的轮廓过滤掉,部分Python代码如下:
#进行闭运算
kernel = np.ones((5, 15), np.uint8)#设置结构元素
closingimg = cv.morphologyEx(DT, cv.MORPH_CLOSE, kernel)
cv.imshow('closingimg', closingimg)
cv.waitKey(0)
cv.destroyAllWindows()
# 进行开运算
opening_img1=cv.morphologyEx(closingimg,cv.MORPH_OPEN, kernel)
cv.imshow('opening_img', opening_img)
cv.waitKey(0)
cv.destroyAllWindows()
# 再次进行开运算
Kerne2 = np.ones((25, 5), np.uint8)#设置新的结构元素
opening_img2=cv.morphologyEx(opening_img1,cv.MORPH_OPEN, kerne2)
cv.imshow('opening_img2', opening_img2)
cv.waitKey(0)
cv.destroyAllWindows()
上述部分代码是运用闭操作和开操作的python代码,由于图像预处理和Canny算法提取图像轮廓之前已经有讲解,这里就省略了那一部分得大量代码。实验结果如下:
图2.2.3.1 原始车牌图像
图2.2.3.2 去除一些区域的轮廓图
2.2.4 提取车牌部分轮廓
提取车牌轮廓可以根据车牌得长宽比例和面积特点,将图像中的车牌部分标准出来,需要对得到的图像进行寻找、绘制轮廓的操作,这个步骤可以使用cv2中findContours和drawContours函数来完成;最后通过绘制的轮廓在原图中相应位置上进行车牌区域提取。
结语
3.本方法适合用于正面拍摄的车牌图片,可以有效的将车牌区域提取出来,需要注意的是,一些图片的效果可能会不理想,这跟图片拍摄的环境和角度都有关系,同时,结构元素的选取也可以变动,这也造成了提取效果的不同,所以对于车牌提取的算法还需要不断的进行优化。
END实习编辑   |   王文星
责       编   |   饶龙江
where2go 团队
微信号:算法与编程之美
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
OpenCV3入门教程(一)基础知识
使用OpenCV+Python进行Canny边缘检测
让机器“看见”:图像数据的特征提取方法
如何使用Python检测和识别车牌?
OpenCV下车牌定位算法实现代码(一)
基于opencv的轮廓匹配算法:python代码实现
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服