OpenCV的轮廓去除

问题描述:

我有在OpenCV的轮廓的问题,主要是与他们是如何处理的。参考看看这个教程:OpenCV的轮廓去除

http://docs.opencv.org/doc/tutorials/imgproc/shapedescriptors/moments/moments.html#moments

那是给我停下来的部分是,当我尝试opbject他们宣称的,我无法弄清楚如何从集合中删除的项目不中断与轮廓互动一切。这些教程中的对象声明都包含在那些没有在下面点击它的人。现在

vector<vector<Point> > contours; 
vector<Vec4i> hierarchy; 

,我可能已经错过了这个地方OpenCV的文档中,但如何从安全返回轮廓列表中删除的轮廓?

通过安全我的意思是我想一个简单的

contours.erase(contours.begin()+15); 
这导致与被它返回的教主项目运行时间的问题

,但是当我包括

hierarchy.erase(hierarchy.begin()+15); 

我损失超过一个轮廓,所以我对于如何从集合中移除单个轮廓返回给我感到不知所措。

编辑:

基于我有我如何能得到的OpenCV返回我一系列的轮廓,我可以很容易地从去除不必要的轮廓的反应如何? 干杯

+0

您使用的是有层次的轮廓和你所期望的轮廓是不相交?通常轮廓都是相互关联的。这就是为什么如果你删除一个,那么其他人会被删除。你必须找到另一种方式来管理可枚举的斑点。就我而言,它通常涉及大量使用drawContours。 – 2013-05-03 02:36:21

+0

@Thomas我想看看你的方法的例子,只是这样我就可以得到的东西的工作,我会担心以后做到这一点的最好办法。 – SZman 2013-05-06 23:10:23

如果您使用的是层次结构,以除去轮廓的最好办法是在层次中的值设置为某些标记值。

所以你走所有轮廓步行层次结构中,在轮廓需要被“删除”,然后设置索引的层次为0(或-1)或东西。

记住层次也有孩子的轮廓,如果你选择这个选项。