OpenCV findContours 返回结果的顺序

在使用OpenCV的findContours进行OCR时,发现返回的文字区域顺序可能为倒序或无序。原因是findContours的算法并不按从左到右的顺序标记。解决办法包括计算区域质心进行排序或根据boundingRect的x坐标对单行文字排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

笔记

在做 OCR 的时候遇到了个坑,在使用了 findContours 查找文字区域的时候,发现返回的文字是倒序的,有时还是无序emmm。

找了很久才发现是这个函数的问题,它的实现算法并不是想当然的从左到右查找标记序号的(从整体来看)。所以要想输出有序结果必须自己实现,如得到区域质心 Centroid ,可参考这篇详解 http://opencvpython.blogspot.com/2012/06/contours-3-extraction.html

而对单行 OCR 文字区域,可以直接在 boudingRect 获取的 Rect 基础上,利用它们的 x 坐标从左到右排序,这样就可以了

备注

findContours 函数具体用法参考这里 Java Code Examples for org.opencv.imgproc.Imgproc.findContours()

public List<Mat> findOrderContours(Mat m) {
        List<MatOfPoint> contours = new ArrayList<>();
        
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值