【问题标题】:Build blocks and isolate characters OpenCV构建块和隔离字符 OpenCV
【发布时间】:2017-02-28 09:05:12
【问题描述】:

我一直在寻找这个问题的答案,但找不到任何有用的东西。

我正在尝试使用相机读取机器可读区域。我需要从机器可读区域中一一提取字符并提供给 OCR。我尝试对图像进行阈值处理,找到轮廓,逐个提取字符,但是当它在实时摄像头上时,发现轮廓丢失了一些字符,我得到的结果与我预期的不一样。

虽然机器可读区域的大小、形式是已知的,但是否有适当的方法为每个字符构建块并提取它们?

更新代码

rect = []
blur = cv2.medianBlur(roi_gray,3) #roi_gray is aligned horizontally MRZ zone
thresh = cv2.adaptiveThreshold(blur,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY,11,2)
_,contours, hierarchy = cv2.findContours(thresh.copy(),cv2.RETR_CCOMP,cv2.CHAIN_APPROX_SIMPLE)
contours = sorted(contours, key=cv2.contourArea, reverse = True)[:90]
minH = 20
minW = 20
for ctr in contours:
    if cv2.contourArea(ctr) < 1000:
        xyc,wh,a = cv2.minAreaRect(ctr)
        w,h = wh
        x,y = xyc
        if h >= minH or w >= minW:
            rect.append(cv2.boundingRect(cv2.approxPolyDP(ctr,3,True)))

rect 包含收集的轮廓,但问题是在阈值处理后,例如字符 N 分裂成两个轮廓,或者 findContours 没有找到它,因此最终输出中缺少字母。

视频

我发现视频似乎是每个角色的作者构建块,但不幸的是作者没有提供有关方法或代码的任何其他信息。 Video link

【问题讨论】:

  • 如果您向我们提供了您所描述情况的至少一张图片,我们会更容易为您提供帮助。
  • 我提供了视频链接
  • 是的,但这是一个工作软件。如果您向我们展示了您的具体问题所在,那么帮助您会更容易。例如,阈值处理后和轮廓查找期间的图像。您最大的敌人是比例和视角变化 - 该视频演示了一种对微小角度变化相当稳健的算法。
  • 是的,你是在阈值之后我遇到了字符消失时的比例问题,例如阈值后的字符 N,findContour 发现两个轮廓而不是一个轮廓。很抱歉我现在不能上传图片,我会稍后再做。
  • 我不知道我是对的,但如果我能找到左上角、右上角、左下角、右下角 4 个字符,这样我就可以获得机读区的真实尺寸?何时计算字符之间的距离以及何时可以获得字符的实际大小和位置?对不起,我可能是错的,我是 CV 的新手,我只是在猜测。

标签: opencv ocr


【解决方案1】:

对我来说,感兴趣的 ID 文本区域具有纵横比,也许块意味着该文本区域。具有纵横比(-+ 错误)可能会删除其他文本区域。在 OpenCV 3 中有一个 detector for text。 此外,我认为检测到的区域是被跟踪的,至少在视频中是这样的。

恕我直言,该应用程序进行模糊处理,然后进行二值化,然后进行侵蚀扩张以检测文本行。因此,在进行换行校正(或者甚至是一点透视校正)之后,您可以通过垂直投影检测字符宽度,从而检测每个字符并将其提供给 OCR。


根据评论,我添加了字符区域的信息。我会做一个打开操作来填充字母内的空白,或链接轮廓。然后,通过简单地对像素值进行垂直求和,您将获得垂直投影。现在你有一些字符之间的最小值。使用这些最小值,您可以通过平均它们之间的距离来获得字符宽度。

您还可以做的不是在每个帧上处理这个宽度,而是在连续帧上获得一个变化不大的宽度。您可以通过对最后 5 帧的宽度进行平均来实现这一点(使用队列)。

尝试一下,然后返回一些结果,这样我们将能够为您提供更多帮助。

还有一个OpenCV forum,你可能会在那里找到更多信息

【讨论】:

  • 我已经检测到感兴趣的文本提取它,进行透视校正,我得到了 3 行 MRZ 文本,你能解释更多关于垂直投影的信息吗?因为 findContours 的主要问题是缺少字母或其结构,就像我在检测两个轮廓的字符 N 之前所说的那样。
猜你喜欢
  • 2018-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多