使用 Python 进行车牌识别2025年3月17日 | 阅读 8 分钟 在以下教程中,我们将了解如何使用 Python 编程语言识别车牌。我们将利用 OpenCV 来识别车牌,并使用 Python 的 pytesseract 来从车牌中提取字符和数字。在本教程结束时,我们将构建一个自动识别车牌的 Python 程序。 了解自动车牌识别系统自动车牌识别系统有各种形状和大小。
使自动车牌识别更加复杂的事实可能需要实时操作。 例如,让我们考虑一个安装在收费公路上的 ANPR 系统。它必须能够检测每辆经过车辆的车牌,对车牌上的字符进行 OCR,然后将这些数据存储在数据库中,以便向车主收取通行费。 一些复合因素使得 ANPR 极具挑战性,其中包括寻找一套可用于训练 ANPR 自定义模型的数据集。用于训练最先进模型的大型、稳健的 ANPR 数据集受到严格保护,很少(如果有的话)公开发布。
项目先决条件我们将使用 Python OpenCV 库。它是一个用于机器学习的开源库,并为计算机视觉提供通用基础设施。我们还将使用 Pytesseract 进行项目。Pytesseract 是一个 Tesseract-OCR 引擎,用于读取图像类型并提取图像中可用的详细信息。 安装我们可以使用 pip 安装程序通过以下语法安装 OpenCV 库: 语法 将遵循相同的程序来安装 Pytesseract 引擎。其语法如下所示: 语法 OpenCV 的特性
理解 Python 代码既然我们已经涵盖了项目的理论部分,那么让我们进入编码部分。为了更好地理解和清晰,我们将项目的整个源代码分为不同的步骤。 步骤 1:导入所需的模块首先,我们必须导入 OpenCV 和 pytessaract 以及 matplotlib、glob 和 OS。 文件:anpr.py 注意:文件名称必须与车牌图像中的实际号码完全一致。例如,如果车牌号码是“FTY348U”,则图像文件名称将是“FTY348U.jpg”。步骤 2:使用 Tesseract 引擎对车牌执行 OCR对于以下步骤,我们必须借助 Tesseract 引擎对车牌执行 OCR。可以在以下代码片段中观察到相同的情况。 文件:anpr.py 说明 在上面的代码片段中,我们使用 OS 模块指定了车牌图像文件的路径。我们还定义了两个空列表,分别为 NP_list 和 predicted_NP。然后,我们使用 append() 函数将实际车牌追加到列表中。然后,我们使用 OpenCV 模块读取每个车牌图像文件,并将它们存储在 NP_img 变量中。然后,我们借助 Python 库包装器将每个车牌图像文件传递给 Tesseract OCR 引擎。然后,我们获得了车牌的 predicted_res,并将其追加到列表中,并与真实的车牌进行比较。 现在,既然我们已经预测了车牌,但我们不知道预测结果。因此,为了查看数据和预测结果,我们将进行一些可视化,如下所示。我们还将不借助任何核心函数来估计预测的准确性。 文件:anpr.py 输出 Original Number Plate Predicted Number Plate Accuracy -------------------- ----------------------- -------- DL3CAM0857 DL3CAM0857 100 % MD06NYW MDOGNNS 40 % TN21TC706 TN21TC706 100 % TN63DB5481 TN63DB5481 100 % UP14DR4070 UP14DR4070 100 % W5KHN WSKHN 80 % 说明 在上面的代码片段中,我们定义了一个计算预测准确性的函数。在该函数中,我们使用 for 循环遍历原始车牌列表和预测车牌列表,并检查它们是否匹配。我们还根据数字的长度检查了准确性,以获得更好和更合适的结果。 我们可以观察到 Tesseract OCR 引擎大多以 100% 的准确率正确预测所有车牌。Tesseract OCR 引擎对这些车牌的预测不正确,我们将对这些车牌文件应用图像处理技术,并将其再次传递给 Tesseract OCR。我们可以通过应用图像处理技术来提高 Tesseract 引擎对预测不正确的车牌的准确率。 步骤 3:图像处理技术让我们考虑以下代码片段来理解图像处理技术。 文件:anpr.py 输出 ![]() 说明 在上面的代码片段中,我们从 matplotlib 库中导入了 image 模块,并使用 for 循环从指定文件夹中提取图像。然后,我们使用 imread() 函数读取提取的图像。然后,我们使用 matplotlib 库的 plot 模块向用户显示图像。
让我们考虑以下示例来理解这一点。 文件:anpr.py 说明 在上面的代码片段中,我们使用 OpenCV 模块的一些工具来调整图像大小、将其转换为灰度并对图像进行去噪。 一旦完成上述步骤,我们就可以将转换后的车牌文件传递给 Tesseract OCR 引擎并查看预测结果。 可以在以下代码片段中观察到相同的情况。 文件:anpy.py 输出 W5KHN 说明 在上面的代码片段中,我们将最终处理的图像传递给 Tesseract OCR 引擎,以从车牌中提取号码。 同样,我们可以对所有其他准确率不是 100% 的车牌执行此图像处理。因此,车牌识别模型已准备就绪。 下一主题Python 程序混淆 |
映射是 Python 中的一种数据结构,它将一组值映射到另一组值。Python 字典是映射中最常用的。每个值都分配有一个键,可以使用该键来查看该值。当发生 KeyError 时...
11 分钟阅读
? ASCII(美国信息交换标准代码)是一种计算机中使用的字符编码标准,用于表示文本。它为每个字符分配一个唯一的数字,这些数字可以表示为十六进制格式。在 Python 中将十六进制字符串转换为 ASCII 涉及几个步骤,...
阅读 2 分钟
在本教程中,我们将解释字典的一些重要且有趣的用例。字典是最重要和最有用的数据结构,它存储键值对,并且灵活、高效且易于使用。尽管 Python 中的字典通常用于...
阅读9分钟
在本文中,您将了解 del 和 pop 之间的区别。但在讨论区别之前,您必须了解 Python 中 del 和 pop 及其示例。Python 中的 del 是什么?"del" 是 Python 内置语句,用于删除……
阅读 4 分钟
什么是数据隐藏?数据隐藏是面向对象编程的一部分,通常用于向用户隐藏数据信息。它包括内部对象细节,例如数据成员、内部工作方式。它维护数据完整性并限制对类的访问...
阅读 3 分钟
Python 编程语言提供了一系列用于处理图形用户界面(GUI)应用程序的框架。Tkinter 或 Tk 接口是 Python 中最常用的用于构建基于图形用户界面(GUI)的应用程序的接口之一。某些应用程序需要验证文本字段...
阅读9分钟
本教程包含了许多非官方库、wheel 包、二进制文件以及流行应用程序的库,其中包括 Python,这是一个有趣的主题。本教程提供了适用于官方 CPython 版本的 Python 编程语言的许多逻辑开源扩展库和 wheel 包的 64 位和 32 位 Windows 版本。
阅读 6 分钟
在本教程中,我们将学习如何使用 Python 内置的 fuzzyWuzzy 库匹配字符串,并通过各种示例确定它们的相似度。简介 Python 提供了几种比较两个字符串的方法。以下是几种主要方法。使用正则表达式 简单比较 使用 dfflib 但是...
阅读 6 分钟
众所周知,Python 是一种标准的脚本语言,因为它具有多功能特性。在下面的教程中,我们将了解如何借助 tkinter 和... 构建一个 GUI 应用程序来关闭、重启和注销计算机。
阅读 24 分钟
我们都必须熟悉Python模块及其工作原理,并且我们还必须知道如何在程序中使用Python模块来使用某些特定功能。有时我们中的许多人会想知道一个模块中存在多少个函数...
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India