使用 OpenCV 和 Tesseract 的摩洛哥车牌识别 (LPR)

2024-01-02

我正在开展一个关于识别摩洛哥车牌的项目,如下图所示:

摩洛哥车牌

请问我如何使用 OpenCV 切出车牌并使用 Tesseract 读取中间的数字和阿拉伯字母。

我研究过这篇研究论文:https://www.researchgate.net/publication/323808469_Moroccan_License_Plate_recognition_using_a_hybrid_method_and_license_plate_features https://www.researchgate.net/publication/323808469_Moroccan_License_Plate_recognition_using_a_hybrid_method_and_license_plate_features

我已经在 Windows 10 中安装了 OpenCV 和用于 python 的 Tesseract。当我使用以下命令在车牌的仅文本部分上运行 tesseract 时"fra"我得到的语言7714315l Bv。如何分离数据?

Edit:我们在摩洛哥使用的阿拉伯字母是: � � � � � � � � � � � 预期结果是:77143 د 6垂直线是无关紧要的,我必须使用它们来分离图像并分别读取数据。

提前致谢!


您可以使用霍夫变换 https://docs.opencv.org/3.4.0/d9/db0/tutorial_hough_lines.html由于两条垂直线不相关,因此要裁剪图像:

import numpy as np
import cv2

image = cv2.imread("lines.jpg")
grayImage = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

dst = cv2.Canny(grayImage, 0, 150)
cv2.imwrite("canny.jpg", dst)

lines = cv2.HoughLinesP(dst, 1, np.pi / 180, 50, None, 60, 20)

lines_x = []
# Get height and width to constrain detected lines
height, width, channels = image.shape
for i in range(0, len(lines)):
    l = lines[i][0]
    # Check if the lines are vertical or not
    angle = np.arctan2(l[3] - l[1], l[2] - l[0]) * 180.0 / np.pi
    if (l[2] > width / 4) and (l[0] > width / 4) and (70 < angle < 100):
        lines_x.append(l[2])
        # To draw the detected lines
        #cv2.line(image, (l[0], l[1]), (l[2], l[3]), (0, 0, 255), 3, cv2.LINE_AA)

#cv2.imwrite("lines_found.jpg", image)
# Sorting to get the line with the maximum x-coordinate for proper cropping
lines_x.sort(reverse=True)
crop_image = "cropped_lines"
for i in range(0, len(lines_x)):
    if i == 0:
        # Cropping to the end
        img = image[0:height, lines_x[i]:width]
    else:
        # Cropping from the start
        img = image[0:height, 0:lines_x[i]]
    cv2.imwrite(crop_image + str(i) + ".jpg", img)

我相信你现在知道如何得到中间部分了;) 希望能帮助到你!

EDIT:

使用一些形态学操作,您还可以单独提取字符:

import numpy as np
import cv2

image = cv2.imread("lines.jpg")
grayImage = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

dst = cv2.Canny(grayImage, 50, 100)

dst = cv2.morphologyEx(dst, cv2.MORPH_RECT, np.zeros((5,5), np.uint8), 
                       iterations=1)
cv2.imwrite("canny.jpg", dst)

im2, contours, heirarchy = cv2.findContours(dst, cv2.RETR_EXTERNAL, 
                                            cv2.CHAIN_APPROX_NONE)

for i in range(0, len(contours)):
    if cv2.contourArea(contours[i]) > 200:
        x,y,w,h = cv2.boundingRect(contours[i])
        # The w constrain to remove the vertical lines
        if w > 10:
            cv2.rectangle(image, (x, y), (x+w, y+h), (0, 0, 255), 1)
            cv2.imwrite("contour.jpg", image)

Result:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 OpenCV 和 Tesseract 的摩洛哥车牌识别 (LPR) 的相关文章

  • 在 python + openCV 中使用网络摄像头的问题

    我正在使用以下代码使用 openCV python 访问我的网络摄像头 import cv cv NamedWindow webcam feed cv CV WINDOW AUTOSIZE cam cv CaptureFromCAM 1 然
  • 如何在 CMake Makefile 中包含 OpenCV 库

    我希望你可以帮助我 我有一个简单的 CMakeLists txt 以便在 Leopard 10 5 8 上构建我的项目 我正在使用 CMake 2 8 1 目前这是代码 cmake minimum required VERSION 2 8
  • 未应用 Tesseract 用户模式

    I want to do OCR on this image This is pre define format ie first five will characters then next four will be digits and
  • 使用 cvcreateimage 使用 opencv 创建简单的黑色图像

    来自 OpenCV 新手的非常基本的问题 我只想创建一个图像 每个像素设置为0 黑色的 我在 main 函数中使用了以下代码 IplImage imgScribble cvCreateImage cvSize 320 240 8 3 我得到
  • 去除 OCR 图像处理中的背景颜色

    我正在尝试删除背景颜色 以提高 OCR 对图像的准确性 示例如下所示 我会将所有字母保留在后处理图像中 同时仅删除浅紫色纹理背景 是否可以使用一些开源软件如Imagemagick将其转换为二值图像 黑 白 来实现这一目标 如果背景有不止一种
  • 超立方体错误。非法的最小或最大规格

    尝试从这里运行示例代码http tess4j sourceforge net codesample html http tess4j sourceforge net codesample html我收到一条错误消息 Error Illega
  • 从索贝尔确定图像梯度方向?

    我正在尝试使用 openCV 的 Sobel 方法的结果来确定图像梯度方向 我知道这应该是一个非常简单的任务 我从此处复制了许多资源和答案中的方法 但无论我做什么 所得方向始终在 0 57 度之间 我希望范围为 0 360 我相信所有的深度
  • Pyinstaller“无法执行脚本 pyi_rth_pkgres”并且缺少软件包

    这是我第一次在这里发布问题 因为我的大部分问题已经被其他人回答了 我正在 python 中开发 GUI 应用程序 并尝试使用 pyinstaller 将其打包到单个文件夹和 exe 中 以便于移植 目前 我使用 Windows 10 和 a
  • OpenCV:使用 StereoCamera 系统对颜色标记进行 3D 姿态估计

    我有一个立体摄像系统并使用两者正确校准它 cv calibrateCamera and cv stereoCalibrate My reprojection error似乎没问题 凸轮0 0 401427 凸轮1 0 388200 立体声
  • 如何将图像从 np.uint16 转换为 np.uint8?

    我正在创建一个图像 image np empty shape height width 1 dtype np uint16 之后我将图像转换为 BGR 模型 image cv2 cvtColor image cv2 COLOR GRAY2B
  • OpenCV 完美识别物体

    我有一个应用程序 我想一次跟踪 2 个在图片中相当小的对象 该应用程序应该在 Android 和 iPhone 上运行 因此算法应该是高效的 对于我的客户来说 如果我们提供一些模式以及附加到要跟踪的对象的软件 以获得易于识别的目标 那就完全
  • 在 Android 中使用 OpenCV 查找图像匹配

    我正在尝试构建一个 Android 应用程序 该应用程序可以比较设备相机拍摄的照片 以在一组图像中找到匹配项 我已经在 Android Studio 上配置了 OpenCV 但仅此而已 有人可以通过链接到资源或建议教程来提供帮助吗 Open
  • 如何在 opencv 3.0 Beta 中从文件读取 UMat?

    我想用UMat所以我的代码可以使用 OpenCL OpenCV 3 0 0 Beta 在 GPU 和 CPU 上运行 但我找不到将图像文件读入的方法UMat或转换一个Mat to UMat 如何将图像读入UMat 样品用于Mat to UM
  • 使用 cv2 在 python 中创建多通道零垫

    我想用 cv2 opencv 包装器在 python 中创建一个多通道 mat 对象 我在网上找到了一些例子 其中 c Mat zeros 被 numpy zeros 替换 这看起来不错 但似乎没有多通道类型适合 看代码 import cv
  • Android API人脸检测与OpenCV/JavaCV人脸检测

    我在 Android 设备上使用了本地 Android 人脸检测 但它似乎很慢 而且我不太确定其可靠性 我还使用了 OpenCV 的人脸检测 但仅限于 PC 而不是 Android 设备 对于 Android 我猜我必须使用 JavaCV
  • 将yuv420p原始数据转换为opencv图像

    我有来自 rtmp 服务器的原始数据 像素格式为 yuv420p 我使用管道来读取数据 但我不知道如何将原始数据解码为图像 command ffmpeg command extend loglevel fatal i rtmp localh
  • 在OpenCV中将YUV转换为BGR或RGB

    我有一个电视采集卡 其输入内容为 YUV 格式 我在这里看到了与此问题类似的其他帖子 并尝试尝试所述的所有可能的方法 但它们都没有提供清晰的图像 目前最好的结果是 OpenCVcvCvtColor scr dst CV YUV2BGR 函数
  • 使用opencv+picamera流IO用树莓派捕获视频

    我使用 Raspberry 来简单地显示一个视频 目前仅此 为此 我必须使用 opencv cv2 我尝试了很多解决方案 但现在我想使用 Picamera 库捕获视频 我将向您展示我的代码 import io import time imp
  • 如何识别与我的对象相关的轮廓并找到它们的几何质心

    问题陈述和背景信息 EDIT 约束 法兰上的红色会随着时间的推移而变化 所以我此时不会尝试使用颜色识别来识别我的对象 除非它足够强大 此外 外部照明也可能是一个因素 因为将来这将是在室外区域 我有 RGB 深度相机 有了它 我就能捕捉到这个
  • Python 中的 Lanczos 插值与 2D 图像

    我尝试重新缩放 2D 图像 灰度 图像大小为 256x256 所需输出为 224x224 像素值范围从 0 到 1300 我尝试了两种使用 Lanczos 插值来重新调整它们的方法 首先使用PIL图像 import numpy as np

随机推荐

  • D3js 制图:自动聚焦地理区域? (svg画布、缩放比例、坐标平移)

    我处理了 SRTM 栅格数据以生成 shapefiles gt geojson gt topojson 因此我可以为 D3js 提供合适的格式 The result look like this the blue area is my ov
  • 在基于范围的 for 循环中使用转发引用有什么优点?

    const auto 如果我想执行只读操作就足够了 然而 我却遇到了 for auto e v v is non const 最近几次 这让我想知道 与其他方法相比 在某些模糊的极端情况下 使用转发引用是否可能会带来一些性能优势 auto
  • 获取 numpy 矩阵中正方形的坐标

    给定以下 numpy 矩阵 import numpy as np np matrix np array 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  • 如何在 Excel 或 apache POI 中“格式化为表格”?

    在 Excel 2010 中 可以将一组单元格 格式化为表格 从而轻松排序和过滤 主页 gt 格式化为表格 Can I do the same in Apache POI Alternatively can one accomplish t
  • 如何在 QML Javascript 中创建和使用 C++ 对象

    我的应用程序同时使用 C 和 QML 我在 C 部分定义了几个对象来访问 SQL 等 看起来像 class MyObject public QObject Q OBJECT public MyObject QObject parent 0
  • 如何在 Swift 中创建 NSMutableDictionary?

    我试图创建一个 NSMutableDictionary 来使用 iOS 中的钥匙链 但出现以下错误 找不到接受提供的参数的 init 重载 这是我正在使用的代码 var keychainQuery NSMutableDictionary N
  • 使用键盘快捷键从系统托盘最大化 C# 应用程序

    我是否可以知道是否可以使用键盘快捷键而不是单击它来从系统托盘最大化我的 Windows 窗体应用程序 我目前正在尽量减少使用这段代码 Minimize to Tray with over ride for short cut private
  • 在 Inno Setup 中运行 schtask.exe 之前,使用安装路径创建 XML 任务文件

    我正在尝试使用 XML 文件中的计划任务创建 Inno Setup 计划任务是 我的应用程序需要以用户登录启动 在 Inno 安装脚本中 Run Filename schtasks exe Parameters create XML app
  • Visual Studio Code 未签名的 Powershell 脚本

    我开始使用 Visual Studio Code 进行 Powershell 脚本编写 我想关闭对未签名代码的检查 但不知道如何执行此操作 我在论坛中也没有找到任何东西 您可以通过向 powershell exe 命令添加参数来调整策略 为
  • 如何在 XCode 4 中为代码添加书签?

    我找不到在 XCode 4 的代码中添加书签的方法 我知道 pragma mark的事情 但这不是我要找的 我需要的是可以通过单击鼠标放置和删除并在下一个和上一个之间导航的东西 就像在 VS 中一样 我有什么遗漏的吗 2023 更新 Xco
  • conv1d 层的输入 0 与该层不兼容::预期 min_ndim=3,发现 ndim=2。收到完整形状:(无,30)

    我一直在研究一个使用时间序列数据与天气数据相结合来估计交通流量的项目 我的时间序列使用了 30 个值的窗口 并且使用了 20 个与天气相关的特征 我已经使用函数式 API 来实现此目的 但我不断收到相同的错误 并且我不知道如何解决它 我看过
  • SGE 提交的作业状态不会从“qw”改变

    我在 ubuntu 14 04 上使用 Sun Grid Engine 对要在多核 CPU 上运行的作业进行排队 我已经在我的系统上安装并设置了 SGE 我创建了一个 hello world 目录 其中包含两个 shell 脚本 即 hel
  • Facebook App Like 服务器错误?

    我有一个带有 喜欢 按钮的示例应用程序 以前可以用 但现在不行了 我之前在 jsfiddle net 上测试过这个 它也有效 但是当我将文件上传到服务器后 它出现了一个错误 弹出 赞 按钮 然后出现以下错误 我已经读过这个article h
  • 渲染要在 JSX 中列出的对象数组

    我尝试将对象数组转换为列表 现在 我只想将对象的 类型 属性转换为列表项 但它不起作用 这是我的代码 constructor props super props this travelRawdata type 15 render retur
  • MVC5 Web API 和依赖注入

    尝试在不使用第三方工具的情况下在 Web API 2 上进行一些 DI 所以 从一些例子中我得到了自定义依赖解析器 为什么没有集成的 奇怪 甚至Microsoft Extensions DependencyInjection不提供任何内容
  • 计算一个坐标是否在另一个坐标的范围内

    我正在编写一个需要位置感知的 Windows Phone 7 应用程序 具体来说 我希望当手机进入特定位置的 固定 范围 例如 0 5 英里 时运行一些 c 代码 我拥有内存中物理位置的所有纬度 经度数据 我将使用地理坐标观察者类 http
  • Gitlab CI - 唯一的内部版本号

    Gitlab CI 中是否有唯一的编号可以用作我们在 Jenkins 中使用的构建号 我开始了解变量 CI PIPELINE IID 但该变量的问题是 它会更新所有分支 并且每个分支都不存在这样的变量 我们使用变量解决了同样的问题 CI P
  • CMake:添加构建目录以包含路径

    我正在寻找将构建目录 与我的源目录 git 存储库不同 添加到 gcc 的包含路径的好方法 以便在汇编 我在寻找 include directories CMAKE BINARY DIR 添加构建目录以防源外构建
  • 更改日期选择器 SSRS 中的日期时间格式

    我如何更改报告服务的日期和时间选择器中的格式 当前始终采用 dd MM yyyy 格式 系统日期时间格式相同 我想将日期更改为 MM dd yyyy 格式 在您的设计器中 日期格式由操作系统的文化决定 部署后 日期格式由浏览器的语言决定
  • 使用 OpenCV 和 Tesseract 的摩洛哥车牌识别 (LPR)

    我正在开展一个关于识别摩洛哥车牌的项目 如下图所示 摩洛哥车牌 请问我如何使用 OpenCV 切出车牌并使用 Tesseract 读取中间的数字和阿拉伯字母 我研究过这篇研究论文 https www researchgate net pub