4

我们正在使用opencv for android实现OCR,一切都很好,直到使用Imgproc.findcontours()查找轮廓的部分它返回的轮廓与输入图像中的顺序不同,即:输入图像MNOP第一个轮廓得到从 findcontours() 是 P 输入图像 EFGH 从 findcontours() 获得的第一个轮廓是 E(这里是正确的)输入图像 IJKL 从 findcontours() 获得的第一个轮廓是 J 所以它似乎随机提取轮廓我们如何修复这个?因为我们想把字写在图像中

4

1 回答 1

10

OpenCV 在寻找轮廓时似乎没有任何顺序。如果我们需要对其进行排序,我们应该手动进行,这是一项额外的任务。

但是出于 OCR 的目的,我也遇到了这个问题。所以我所做的是找到检测到的轮廓的质心。可以使用矩来找出它。

使用 Moments 寻找质心

或者您可以找到轮廓的边界框,然后找到该边界框的中心。后来在 ocr 之后将数据放在同一个质心上。

这是我自己准备 OCR 时使用的方法。您可以在这个 SOF 问题中找到完整的详细信息:OpenCV-Python 中的简单数字识别 OCR

编辑: FindContours 的顺序,(来自 vasile 的评论后)

原图:

在此处输入图像描述

找到轮廓的顺序:

在此处输入图像描述

于 2012-06-21T19:02:31.223 回答