opencv Contour Removal

时间:2013-05-02 21:37:10

标签: c++ opencv

我在opencv中遇到轮廓问题,主要是处理它们的方式。供参考,请参阅本教程:

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

让我暂停的部分是当我尝试与他们声明的轮廓对象交互时,我无法弄清楚如何在不破坏所有内容的情况下从集合中删除项目。本教程中的对象声明包含在那些未在下面单击它的人中。

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

现在,我可能在opencv文档中遗漏了这个,但是如何安全地从返回的轮廓列表中删除轮廓?

安全地我的意思是我尝试了一个简单的

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

导致与它一起返回的层次结构项的运行时问题,但是当我包含

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

我失去了不止一个轮廓,所以我有点不知道如何从回收给我的集合中删除一个轮廓。

编辑:

根据我得到的反应,我如何让OpenCV返回一系列轮廓,我可以轻松删除不必要的轮廓? 干杯

1 个答案:

答案 0 :(得分:0)

如果您使用的是层次结构,删除轮廓的最佳方法是将层次结构中的某些值设置为某个标记值。

因此,如果需要“删除”轮廓,则通过遍历层次结构遍历所有轮廓,然后将层次结构中的索引设置为0(或-1)或其他内容。

如果选择此选项,请记住层次结构也有子轮廓。