使用 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) 的相关文章

  • 如何在Eclipse中配置Tesseract进行Android开发?

    我已经从事 Android 工作 6 个月了 至此我对Android开发有了基本的了解 现在我想使用 Tesseract 开发一个 OCR Android 应用程序 为此 我从 Tesseract 下载了 android ndk r6b t
  • Opencv matchTemplate 和 np.where():仅保留唯一值

    继带有马里奥硬币的 opencv 教程 https opencv python tutroals readthedocs io en latest py tutorials py imgproc py template matching p
  • Opencv未找到所有轮廓

    我试图找到该图像的轮廓 但是该方法查找轮廓只返回1轮廓 轮廓突出显示image 2 我正在努力寻找all外部轮廓就像这些圆圈 里面有数字 我究竟做错了什么 我可以做什么来实现它 image 1 image 2 以下是我的代码的相关部分 th
  • 来自 OpenCV 的外部参数

    我正在使用 OpenCV 来校准立体相机对 我拍摄了各种校准照片 并且使用 cv2 calibrateCamera 对内在参数进行了令人满意的拟合 然而 目前尚不清楚如何获取外部参数 该函数仅返回cameraMatrix 尽管它很有用 但实
  • Python:opencv warpPerspective 既不接受 2 个也不接受 3 个参数

    我发现单应矩阵如下特征匹配 单应性教程 https docs opencv org 3 4 1 d1 de0 tutorial py feature homography html using M mask cv2 findHomograp
  • OpenCV的拼接模块可以拼接平行运动相机拍摄的图像吗?

    我想知道是否缝合 http docs opencv org modules stitching doc stitching html http docs opencv org modules stitching doc stitching
  • Python中最相似的人脸识别

    如何使用Python和OpenCV来查找面部相似 我已成功使用 OpenCV 和 Python 使用 Haar Cascades 从多张照片中提取人脸 我现在有一个图像目录 所有这些都是不同人的面孔 我想做的是拍摄一张样本图像 然后看看它最
  • 来自连接到远程机器的相机的 Opencv 流

    我正在用 python 开发一个 wx 应用程序 用于流式传输和显示来自两个不同网络摄像头的视频 这工作正常 但现在我需要在不同的场景中执行此操作 其中两个摄像头连接在通过网络连接的 Windows 上运行的单独计算机中 我的应用程序将在机
  • opencv 2.3.* 读取不工作

    我无法让 imread 工作 与这个人有同样的问题 OpenCV imwrite 2 2 在 Windows 7 上导致异常 并显示消息 OpenCV 错误 未指定错误 无法找到指定扩展名的编写器 https stackoverflow c
  • 使用 ffmpeg 或 OpenCV 处理原始图像

    看完之后维基百科页面 http en wikipedia org wiki Raw image format原始图像格式 是任何图像的数字负片 为了查看或打印 相机图像传感器的输出具有 进行处理 即转换为照片渲染 场景 然后以标准光栅图形格
  • OpenCV 2.3 与 VS 2008 - 鼠标事件

    强制性 我是新手 有一份涉及编程的工作 并且我一边工作一边自学 不用说 作为一名老师 我经常犯彻底的错误 我现在所处的位置 我创建了 Graph 类 它 令人惊讶的是 制作了图表 但现在我想通过单击鼠标来修改图形 但我似乎无法让鼠标处理程序
  • 创建 OpenCV 的 mouseCallback 函数的基于类的实现时遇到问题

    正如标题所示 我在基于类的 C 结构中实现 OpenCV 的 mouseCallback 函数时遇到了一些麻烦 请允许我解释一下 我定义了一个名为 BriskMatching 的类 在其中创建了一个名为 mouseCallback 的成员函
  • 为什么我无法在 Mac 12.0.1 (Monterey) 上使用 pip 安装 OpenCV? [复制]

    这个问题在这里已经有答案了 当我尝试使用 python pip 安装 OpenCV 时 它显示了以下内容 Remainder of file ignored Requirement already satisfied pip in Libr
  • 将姓名拆分为名字和姓氏 Java(Android OCR)[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我使用本机 Android JAVA 创建了一个 OCR 光学字符识别 应用程序 我可以将图像转换为文本视图 但是我如何使用这些词分别识别名
  • 如何使用 Python 裁剪图像中的矩形

    谁能给我关于如何裁剪两个矩形框并保存它的建议 我已经尝试过这段代码 但效果不佳 import cv2 import numpy as np Run the code with the image name keep pressing spa
  • 如何确定与视频中物体的距离?

    我有一个从行驶中的车辆前面录制的视频文件 我将使用 OpenCV 进行对象检测和识别 但我停留在一方面 如何确定距已识别物体的距离 我可以知道我当前的速度和现实世界的 GPS 位置 但仅此而已 我无法对我正在跟踪的对象做出任何假设 我计划用
  • 如何绘制更大的边界框和仅裁剪边界框文本 Python Opencv

    我正在使用 easyocr 来检测图像中的文本 该方法给出输出边界框 输入图像如下所示 Image 1 Image 2 使用下面的代码获得输出图像 But I want to draw a Single Bigger bounding bo
  • Tesseract OCR - 手写字体

    我正在尝试使用Tesseract OCR http code google com p tesseract ocr 检测其中包含纯文本的图像文本 但这些文本具有名为的手写字体Journal Example 结果不是最好的 千里马 尺寸 宽
  • 在 Python 中将 OpenCV 帧流式传输为 HTML

    我正在尝试从 opencv Pyt hon 中的 URL 读取视频 然后逐帧处理它 然后将其发送到 HTML 页面 But I am only getting the first frame after that the program g
  • 将 4 通道图像转换为 3 通道图像

    我正在使用 OpenCV 2 4 6 我正在尝试将 4 通道 RGB IplImage 转换为 4 通道 HSV 图像 下面是我的代码 给出错误 OpenCV 错误 未知函数断言失败 我认为 cvCvtColor 支持 3 通道图像 有没有

随机推荐

  • 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