【问题标题】:OpenCV findContours: make it robustOpenCV findContours:使其健壮
【发布时间】:2014-03-26 01:46:28
【问题描述】:

如何使 findContours 稳健以使其工作,即使轮廓可能由于噪声数据和/或图像中的周边缘/梯度而无法闭合?

对于第一种情况(未关闭),我遇到了以下问题: 当在这样的阈值图片上使用该算法时,该算法运行良好:

但是当我仔细拍照时,没有封闭的轮廓,请看这里:

如何使它也适用于这种情况?我想也许总是在我的照片的顶部和底部画一条水平线,然后它总是会“穿过”纸条(当纸条被太靠近时),使其成为一个完整的轮廓。但是,当音符有点旋转时,这可能不太好用,因为我不会得到正确的轮廓,是吗!? 你有更好的想法吗? 提前非常感谢!

【问题讨论】:

    标签: java opencv contour threshold


    【解决方案1】:

    这是一个简单可行的解决方案。

    如果您知道哪些轮廓点是间隙的开口(前面的伪代码):

    Point pointGAP1;
    Point pointGAP2;
    
    if (pointGAP1.coordinate == iamgeBorder || pointGAP2.coordinate == iamgeBorder) {
        // add line from pointGAP1 to pointGAP2
    }
    

    【讨论】:

    • 问题是,我什至没有得到轮廓,因为它没有关闭,所以我无法实现你的想法。我正在使用以下Imgproc.findContours(I,contours,new Mat(),Imgproc.RETR_LIST,Imgproc.CHAIN_APPROX_SIMPLE); 还是因为Imgproc.CHAIN_APPROX_SIMPLE 我只得到一个有效的闭合矩形的轮廓?我是否需要更改函数的调用以使其也给我打开轮廓!?
    • 是的,如果我没记错的话,其中一个参数使 findContours 输出开放轮廓。
    • 也许我弄错了参数,但请检查解决该问题的这个问题,它可能会有所帮助:stackoverflow.com/q/12929197/1085483
    • 很遗憾没有。我已经尝试过扩张/侵蚀,但它并没有弥补在我的情况下可能出现的大差距:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-14
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多