提取内部轮廓(洞)的OpenCV

问题描述:

是不是有一种方法来提取或显示孔,而丢弃外部轮廓?提取内部轮廓(洞)的OpenCV

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

你可以使用类似这样与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()层次结构参数,看轮廓是一个洞。

+0

都能跟得上它没有工作... 我想是通过使用cvDrawContours(SRC1,C,红,蓝,1,0.25,8)来显示轮廓; 我不能从外部轮廓单独的孔......外部和内部轮廓有相同的标志大部分的时间 的......只有极少数的外部轮廓有不同的标志...... 总之它同时显示外部轮廓和孔的我们的代码情况下...感谢您的帮助反正;) – Saleh 2012-01-03 09:58:31

+0

那么只绘制你的“如果”,你将不得不调用cvDrawContours与maxLevel参数= 0。像这样的事情已经检查孔:cvDrawContours(SRC1, srcSeq,红色,蓝色,0,0.25,8); – Adrian 2012-01-03 10:09:19

+0

烨得到了它...... thanku这么多... Saleh 2012-01-04 04:37:22