我们使用OpenCV进行机器人执行OCR,一切正常,直到使用Imgproc.findcontours(findning轮廓的一部分),它给后面的轮廓没有以相同的顺序,因为他们在输入图像即:输入图像MNOP第一轮廓变从findcontours()为P输入图像EFGH第一轮廓从findcontours得到()是E(这里是正确的)输入图像IJKL第一轮廓从findcontours得到()为J这样看来,它提取的轮廓随机我们如何解决这个? 因为我们想给背单词,因为它是在图像中究竟写
Answer 1:
OpenCV的似乎并不具有任何顺序,同时寻找轮廓。 如果我们需要它来分类,我们应该做手工,这是一个额外的任务。
但对于OCR的目的,我也有这个问题。 所以我所做的就是找到所检测到的轮廓的重心。 它可以使用矩被发现。
查找使用质心的时刻
或者,你可以找到轮廓的边界框,然后找到边框的中央。 后来经过OCR对同一事物的质心的数据。
这是当我准备OCR自己,我所用的方法。 你可以找到在这个SOF问题的完整细节: 简单的数字识别OCR OpenCV中的Python
编辑:FindContours的顺序(从瓦西后评论)
原图:
顺序形状部,其中发现:
文章来源: Findcontours retrieve contours unsorted