我在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返回一系列轮廓,我可以轻松删除不必要的轮廓? 干杯
答案 0 :(得分:0)
如果您使用的是层次结构,删除轮廓的最佳方法是将层次结构中的某些值设置为某个标记值。
因此,如果需要“删除”轮廓,则通过遍历层次结构遍历所有轮廓,然后将层次结构中的索引设置为0(或-1)或其他内容。
如果选择此选项,请记住层次结构也有子轮廓。