OpenCV:边缘检测图像中的字母和单词检测

时间:2017-01-29 17:44:38

标签: c++ opencv image-processing detection

我目前正在处理文字识别问题。这是带边缘检测的二值化图像的一部分(使用Canny):

编辑:我发布了一个图片链接。我没有10个代表点,所以我无法发布图像。

编辑2:在阈值处理之后,这是同一块。老实说,我不知道哪种方法会更好。

[ 2

问题保持不变:

  1. 我该如何检测某些字母?我需要确定每个字母的位置,然后确定每个字。

  2. 有些字母打开了#34;是一个问题吗?我的意思是他们不是封闭的区域。

  3. 如果我使用cv::matchtemplate,是否意味着每个字母需要24个模板,每个数字需要10个?然后循环我的图像以确定最佳相关性?

  4. 如果它们所在的字母和方块都是1像素宽,我应该使用哪些过滤器/操作来关闭打开的字母?我尝试了各种扩张和侵蚀的组合 - 没有效果。

2 个答案:

答案 0 :(得分:0)

问题是“如何使用Open CV进行OCR?”答案是,这是一个涉及过程并且相当困难。

但有些指针。首先,它很难检测出概述的字母。大多数工具都是为填充字母设计的。但是,如果使用特定大小阈值填充所有循环,那么该图像看起来好像只有一个非字母分心器。你可以摆脱非字母线,因为它们是一个巨大的连接对象。

一旦你填写了这些字母,就可以对它们进行镂空。

在细节为一个像素宽的图像上,您不能非常明智地使用像打开和关闭这样的形态操作。您可以通过操作放置图像,但如果所有要素都是一个像素,则基本上没有细节和噪声之间的区别。但是一旦你填写了这些字母,这个问题就会消失。

这绝不是告诉你如何做到的,只是给出一些指示。

答案 1 :(得分:0)

正如前面的回答中提到的,malcolm OCR在填充的字母上会更好用,所以你可以做以下事情

1使用您的第二种方法,但采取相反的结果而不是您正在显示的结果。 2运行连接组件标签 3,每个组件都可以运行OCR算法

为了丢弃异常值,我将尝试使用检测到的字母之间的空间关系。他们出售的水平或垂直旁边有其他字母。

祝你好运

相关问题