我们正在使用opencv for android实现OCR,一切都很好,直到使用Imgproc.findcontours()查找轮廓的部分它返回的轮廓与输入图像中的顺序不同,即:输入图像MNOP第一个轮廓得到从 findcontours() 是 P 输入图像 EFGH 从 findcontours() 获得的第一个轮廓是 E(这里是正确的)输入图像 IJKL 从 findcontours() 获得的第一个轮廓是 J 所以它似乎随机提取轮廓我们如何修复这个?因为我们想把字写在图像中
问问题
2475 次
1 回答
10
OpenCV 在寻找轮廓时似乎没有任何顺序。如果我们需要对其进行排序,我们应该手动进行,这是一项额外的任务。
但是出于 OCR 的目的,我也遇到了这个问题。所以我所做的是找到检测到的轮廓的质心。可以使用矩来找出它。
或者您可以找到轮廓的边界框,然后找到该边界框的中心。后来在 ocr 之后将数据放在同一个质心上。
这是我自己准备 OCR 时使用的方法。您可以在这个 SOF 问题中找到完整的详细信息:OpenCV-Python 中的简单数字识别 OCR
编辑: FindContours 的顺序,(来自 vasile 的评论后)
原图:
找到轮廓的顺序:
于 2012-06-21T19:02:31.223 回答