基于OpenCV 的车牌识别

这篇具有很好参考价值的文章主要介绍了基于OpenCV 的车牌识别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基于OpenCV 的车牌识别

基于OpenCV 的车牌识别

车牌识别是一种图像处理技术,用于识别不同车辆。这项技术被广泛用于各种安全检测中。现在让我一起基于 OpenCV 编写 Python 代码来完成这一任务。

车牌识别的相关步骤

1. 车牌检测:第一步是从汽车上检测车牌所在位置。我们将使用 OpenCV 中矩形的轮廓检测来寻找车牌。如果我们知道车牌的确切尺寸,颜色和大致位置,则可以提高准确性。通常,也会将根据摄像机的位置和该特定国家 / 地区所使用的车牌类型来训练检测算法。但是图像可能并没有汽车的存在,在这种情况下我们将先进行汽车的,然后是车牌。

2. 字符分割:检测到车牌后,我们必须将其裁剪并保存为新图像。同样,这可以使用 OpenCV 来完成。

3. 字符识别:现在,我们在上一步中获得的新图像肯定可以写上一些字符(数字 / 字母)。因此,我们可以对其执行 OCR(光学字符识别)以检测数字。

1. 车牌检测

让我们以汽车的样本图像为例,首先检测该汽车上的车牌。然后,我们还将使用相同的图像进行字符分割和字符识别。如果您想直接进入代码而无需解释,则可以向下滚动至此页面的底部,提供完整的代码,或访问以下链接。https://github.com/GeekyPRAVEE/OpenCV-Projects/blob/master/LicensePlateRecoginition.ipynb

在次使用的测试图像如下所示。

基于OpenCV 的车牌识别

图片来源链接:https : //rb.gy/lxmiuv

第 1 步: 将图像调整为所需大小,然后将其灰度。相同的代码如下

img = cv2.resize(img, (620,480) )

调整大小后,可以避免使用较大分辨率的图像而出现的以下问题,但是我们要确保在调整大小后,车号牌仍保留在框架中。在处理图像时如果不再需要处理颜色细节,那么灰度变化就必不可少,这加快了其他后续处理的速度。完成此步骤后,图像将像这样被转换

基于OpenCV 的车牌识别

步骤 2:每张图片都会包含有用和无用的信息,在这种情况下,对于我们来说,只有牌照是有用的信息,其余的对于我们的程序几乎是无用的。这种无用的信息称为噪声。通常,使用双边滤波(模糊)会从图像中删除不需要的细节。

gray = cv2.bilateralFilter(gray, 13, 15, 15)

语法为 destination_image = cv2.bilateralFilter(source_image, diameter of pixel, sigmaColor, sigmaSpace)。我们也可以将 sigma 颜色和 sigma 空间从 15 增加到更高的值,以模糊掉更多的背景信息,但请注意不要使有用的部分模糊。输出图像如下所示可以看到该图像中的背景细节(树木和建筑物)模糊了。这样,我们可以避免程序处理这些区域。

基于OpenCV 的车牌识别

步骤 3:下一步是我们执行边缘检测的有趣步骤。有很多方法可以做到,最简单和流行的方法是使用 OpenCV 中的 canny edge 方法。执行相同操作的行如下所示

edged = cv2.Canny(gray, 30, 200) #Perform Edge detection

语法为 destination_image = cv2.Canny(source_image,thresholdValue 1,thresholdValue 2)。阈值谷 1 和阈值 2 是最小和最大阈值。仅显示强度梯度大于最小阈值且小于最大阈值的边缘。结果图像如下所示

基于OpenCV 的车牌识别

步骤 4:现在我们可以开始在图像上寻找轮廓

contours=cv2.findContours(edged.copy(),cv2.RETR_TREE,

一旦检测到计数器,我们就将它们从大到小进行排序,并只考虑前 10 个结果而忽略其他结果。在我们的图像中,计数器可以是具有闭合表面的任何事物,但是在所有获得的结果中,牌照号码也将存在,因为它也是闭合表面。

为了过滤获得的结果中的车牌图像,我们将遍历所有结果,并检查其具有四个侧面和闭合图形的矩形轮廓。由于车牌肯定是四边形的矩形。

for c in cnts:

找到正确的计数器后,我们将其保存在名为 screenCnt 的变量中,然后在其周围绘制一个矩形框,以确保我们已正确检测到车牌。

基于OpenCV 的车牌识别

步骤 5:现在我们知道车牌在哪里,剩下的信息对我们来说几乎没有用。因此,我们可以对整个图片进行遮罩,除了车牌所在的地方。相同的代码如下所示

# Masking the part other than the number plate

被遮罩的新图像将如下所示

基于OpenCV 的车牌识别

2. 字符分割

车牌识别的下一步是通过裁剪车牌并将其保存为新图像,将车牌从图像中分割出来。然后,我们可以使用此图像来检测其中的字符。下面显示了从主图像裁剪出 ROI(感兴趣区域)图像的代码

# Now crop

结果图像如下所示。通常添加到裁剪图像中,如果需要,我们还可以对其进行灰色处理和边缘化。这样做是为了改善下一步的字符识别。但是我发现即使使用原始图像也可以正常工作。

基于OpenCV 的车牌识别

3. 字符识别

该车牌识别的最后一步是从分割的图像中实际读取车牌信息。就像前面的教程一样,我们将使用 pytesseract 包从图像读取字符。相同的代码如下

#Read the number plate

基于OpenCV 的车牌识别

原始图像上印有数字 “CZ20FSE”,并且我们的程序检测到它在 jupyter 笔记本上打印了相同的值。

车牌识别失败案例

车牌识别的完整代码,其中包含程序和我们用来检查程序的测试图像。要记住,此方法的结果将不准确。准确度取决于图像的清晰度,方向,曝光等。为了获得更好的结果,您可以尝试同时实现机器学习算法。

基于OpenCV 的车牌识别

这个案例中我们的程序能够正确检测车牌并进行裁剪。但是,Tesseract 库无法正确识别字符。OCR 已将其识别为 “MH13CD 0036”,而不是实际的 “ MH 13 CD 0096”。通过使用更好的方向图像或配置 Tesseract 引擎,可以纠正此类问题。

其他成功的例子

大多数时候,图像质量和方向都是正确的,程序能够识别车牌并从中读取编号。下面的快照显示了获得的成功结果。

基于OpenCV 的车牌识别

基于OpenCV 的车牌识别

完整代码

#@programming_fever

Github 链接 - https: //github.com/GeekyPRAVEE/OpenCV-Projects/blob/master/LicensePlateRecoginition.ipynb文章来源地址https://www.toymoban.com/news/detail-488687.html

到了这里,关于基于OpenCV 的车牌识别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机java项目 - 基于opencv与SVM的车牌识别系统

    基于opencv与SVM的车牌识别系统 提示:适合用于课程设计或毕业设计,工作量达标,源码开放 用python3+opencv3做的中国车牌识别,包括算法和客户端界面,只有2个文件,surface.py是界面代码,predict.py是算法代码,界面不是重点所以用tkinter写得很简单。 python3.7.3 opencv4.0.0.21 numpy

    2024年02月20日
    浏览(53)
  • 深度学习实战项目(一)-基于cnn和opencv的车牌号识别

    网上大部分是关于tensorflow,使用pytorch的比较少,本文也在之前大佬写的代码的基础上,进行了数据集的完善,和代码的优化,效果可比之前的pytorch版本好一点。 数据集来自github开源的字符数据集: 数据集有:0-9,26个字母减去I和O,还有中文字,这里可以看看几张图片:

    2024年02月06日
    浏览(58)
  • 【功能超全】基于OpenCV车牌识别停车场管理系统软件开发【含python源码+PyqtUI界面+功能详解】-车牌识别python 深度学习实战项目

    摘要: 车牌识别系统(Vehicle License Plate Recognition,VLPR) 是指能够检测到受监控路面的车辆并自动提取车辆牌照信息(含汉字字符、英文字母、阿拉伯数字及号牌颜色)进行处理的技术。车牌识别是现代智能交通系统中的重要组成部分之一,应用十分广泛。本文详细介绍了 车牌

    2024年02月09日
    浏览(66)
  • 基于OpenCV+LPR模型端对端智能车牌识别——深度学习和目标检测算法应用(含Python+Andriod全部工程源码)+CCPD数据集

    本项目基于CCPD数据集和LPR(License Plate Recognition,车牌识别)模型,结合深度学习和目标检测等先进技术,构建了一个全面的车牌识别系统,实现了从车牌检测到字符识别的端到端解决方案。 首先,我们利用CCPD数据集,其中包含大量的中文车牌图像,用于模型的训练和验证。

    2024年02月09日
    浏览(48)
  • OpenCV(项目)车牌识别1 -- 车牌提取(形态学)

    目录 一、形态学车牌提取(简单:单情景)  1、读取图片,转灰度图  2、提取轮廓(Sobel算子提取y方向边缘) 3、自适应二值化 4、闭运算处理,把图像闭合、揉团,使图像区域化 5、腐蚀/膨胀去噪得到车牌区域 5-1、横向腐蚀、膨胀 5-2、纵向腐蚀、膨胀 6、获取外轮廓 6-1、

    2024年02月08日
    浏览(44)
  • 车牌识别系统 opencv

             两个关键子系统: 车牌定位 和 字符识别 原始车辆图像采集 汽车牌照区域定位 汽车牌照内字符的分割 汽车牌照内字符的识别 车牌定位方法: 基于边缘检测的车牌定位方法 基于遗传算法的车牌定位方法 基于纹理特征的车牌定位方法 基于数学形态学的车牌定位

    2024年02月21日
    浏览(39)
  • Opencv识别车牌

    #encoding:utf8 import cv2 import numpy as np Min_Area = 50 #定位车牌 def color_position(img,output_path): colors = [#([26,43,46], [34,255,255]), # 黄色 ([100,43,46], [124,255,255]), # 蓝色 ([35, 43, 46], [77, 255, 255]) # 绿色 ] hsv =cv2.cvtColor(img, cv2.COLOR_BGR2HSV) for (lower, upper) in colors: lower = np.array(lower, dtype=“uint8”) # 颜色

    2023年04月26日
    浏览(40)
  • OpenCV第七篇:车牌识别

    目录 1.调整图片大小,并获取灰度图  2.双边滤波去除噪音:cv2.bilateralFilter()。 3.边缘检测:cv2.Canny(image,threshold1,threshold2) 4.寻找轮廓:车牌(四边形) ​编辑 5.图像位运算进行遮罩 6.图像剪裁 7.字符识别:OCR 1.调整图片大小,并获取灰度图  2.双边滤波去除噪音:cv

    2024年02月06日
    浏览(51)
  • opencv-车牌识别

    ​ 最近研究了几天车牌识别的项目,现在记录一下学习的过程,基于OpenCV编写Python代码来完成这一任务。 ​ 文章末尾有源码,有兴趣的读者可以用jupyter notebook一步一步看执行过程和结果。 本项目车牌识别的步骤为: 加载图片 高斯去噪 灰度转换 边缘检测 闭运算,腐蚀膨胀

    2024年02月05日
    浏览(35)
  • opencv机器学习车牌识别系统

    文章目录 0 前言+ 1 课题介绍+ 1.1 系统简介+ 1.2 系统要求+ 1.3 系统架构 2 实现方式+ 2.1 车牌检测技术+ 2.2 车牌识别技术+ 2.3 SVM识别字符+ 2.4 最终效果 3 最后 这两年开始,各个学校对毕设的要求越来越高,难度也越来越大… 毕业设计耗费时间,耗费精力,甚至有些题目即使是专

    2024年02月05日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包