【问题标题】:Extract internal contours (HOLES) OpenCV提取内部轮廓(HOLES)OpenCV
【发布时间】:2012-01-03 06:57:45
【问题描述】:

有没有办法提取或显示孔洞,同时丢弃外部轮廓?

我只能显示外部轮廓,使用 CV_RETR_EXTERNAL 但似乎没有办法只显示内部轮廓(孔)。

【问题讨论】:

    标签: image-processing opencv imagemagick computer-vision contour


    【解决方案1】:

    您可以在 C 接口中使用类似的东西:

    cvFindContours(tmp, storage, &srcSeq, sizeof(CvContour), 
                           CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE);
            while (srcSeq)
            {
                if (CV_IS_SEQ_HOLE(srcSeq))
                {
                    // do something with the hole
                }
                srcSeq = srcSeq->h_next;
            }
    

    如果您使用的是 C++ 接口,则必须使用 FindContours() 中的层次结构参数来查看轮廓是否为孔。

    【讨论】:

    • 不,它不起作用......我想要的是使用 cvDrawContours(src1,c,red,blue,1,0.25,8);我无法将孔与外部轮廓分开...大多数时候外部和内部轮廓都具有相同的标志...只有少数外部轮廓具有不同的标志...简而言之,在您的代码的情况下它会同时显示外部轮廓和孔...无论如何都感谢您的帮助;)
    • 好吧,只绘制你在“if”中检查过的洞,你必须用 maxLevel 参数 = 0 调用 cvDrawContours。像这样:cvDrawContours(src1, srcSeq, red, blue, 0 , 0.25, 8);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 2019-01-25
    • 2012-05-10
    • 2020-06-14
    • 2021-09-07
    • 2020-05-08
    • 1970-01-01
    相关资源
    最近更新 更多