当前位置: 首页 > 知识库问答 >
问题:

OpenCV:为OCR隔离牌照字符

蒋阳华
2023-03-14

    < li >通过SVM分离单个字符进行分类。 < li >使用有效字符的白名单向Tesseract OCR提供清理后的牌照。

为了清理盘子,我执行以下转换:

# Assuming 'plate' is a sub-image featuring the isolated license plate
height, width = plate.shape
# Enlarge the license plate
cleaned = cv2.resize(plate, (width*3,height*3))
# Perform an adaptive threshold
cleaned = cv2.adaptiveThreshold(cleaned ,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY,11,7)
# Remove any residual noise with an elliptical transform
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(3,3))
cleaned = cv2.morphologyEx(cleaned, cv2.MORPH_CLOSE, kernel)

我的目标是将字符隔离为黑色,将背景隔离为白色,同时去除任何噪声。

使用这种方法,我发现我通常会得到三个结果之一:

图像太嘈杂。

删除太多(字符脱节)。

合理(所有字符均独立且一致)。

我已经把原始图像和裁剪过的盘子包含在这张相册里了。

我意识到,由于车牌的不一致性质,我可能需要一种更动态的清理方法,但我不知道从哪里开始。我尝试过使用阈值和形态函数的参数,但这通常会导致对一幅图像的过度调整。

如何提高我的清理功能?

共有1个答案

端木承业
2023-03-14

你正在尝试做的事情相当具有挑战性,而你展示的样品仍然是简单的。

首先,重要的是要对主要字符区域进行良好的划分。

对于垂直定界,尝试找到水平白线作为分隔符。对于更困难的情况,如“太吵”,您可以沿水平线计算统计数据,如白线和黑线的分布-计数、平均长度、长度偏差-并找到跨真实字符和额外特征的线之间的区别参数(顺便说一下,这将隐式检测白线)。

这样做,您将获得由相同类型的行形成的矩形,这些矩形可能会不小心被碎片。尝试合并似乎属于真实字符的矩形。下一步的处理将仅限于这个矩形。

对于垂直定界来说,事情并不那么容易,因为您将会看到字符被分割以便垂直线可以穿过它们的情况,以及不同字符被污垢或其他混乱连接的情况。(在某些可怕的情况下,角色可能会触碰到很大的区域。)

通过与上述类似的技术,找到候选垂直线。现在,除了形成几个假设,并列举这些分隔符的可能组合之外,您别无选择,因为字符的间距(在它们的轴之间)是最小的。

形成这些假设后,您可以通过执行字符识别和计算总分来确定最佳组合。(在这个阶段,我不认为在不知道字符可能的形状的情况下执行分割是可能的,这就是识别发挥作用的原因。)

 类似资料:
  • 我为iOS写了一个数字OCR。我有一个测试图像png与两位数5和4。我找到轮廓了。我如何在Tesseract转乘等高线? 初始化tesseract: 用于检测轮廓的函数: GitHub项目链接:https://github.com/maxpatsy/iorc

  • 如何使用opencv和pytesseract从图像中提取文本? 从 PIL 导入触发器导入图像导入 np 从 matplotib 导入 pyplot 作为 plt 但这是在给错误—— Traceback(最近一次调用last):print pytesserac t . image _ to _ string(edges)File "/home/sroy 8091/中文件" open.py "的第1

  • 本文向大家介绍请解释下什么是cookie隔离?为什么要隔离?如何隔离?相关面试题,主要包含被问及请解释下什么是cookie隔离?为什么要隔离?如何隔离?时的应答技巧和注意事项,需要的朋友参考一下 什么是 Cookie 隔离? 或者说:请求资源的时候不要让它带 cookie 怎么做 cookie 隔离技术和传统的多域名拆分请求,提高浏览器并发请求数有点类似,均是采用多域名来处理请求 传统做法是将 c

  • 问题内容: 我正在尝试在OpenCV-Python(cv2)中实现“数字识别OCR”。它仅用于学习目的。我想学习OpenCV中的KNearest和SVM功能。 我每个数字有100个样本(即图像)。我想和他们一起训练。 示例附带一个示例。但是我仍然不知道如何使用它。我不了解样本,回复等。此外,它首先会加载txt文件,而我首先并不了解。 稍后进行搜索时,我可以在cpp样本中找到letter_recog

  • 我必须写一个程序,从一个从屏幕上拍摄的视频在司机面前的汽车,所以它只对数字进行OCR。我正在努力寻找实现它的方法。我在考虑使用openCV,但作为替代方案,我在考虑使用一个OCR程序,从视频中提取帧并找到数字。但是许多OCR程序不能正确地识别数字(也许OCR需要训练?)。所以我想用计算机视觉库来完成这项工作。 你认为实施这个简单程序的最佳方法是什么? 我想使用计算机视觉库和匹配的模板会很好,但也可

  • Preparation1. Deploy CIS kubectl apply -f https://www.wenjiangs.com/doc/HUhTYdSwn8cis.yaml https://www.wenjiangs.com/doc/HUhTYdSwn8cis.yaml2. Deploy Service kubectl apply -f https://www.wenjiangs.com/