从向量中删除opencv rect对象

Posted

技术标签:

【中文标题】从向量中删除opencv rect对象【英文标题】:Erase opencv rect objects from a vector 【发布时间】:2014-01-07 13:12:56 【问题描述】:

我正在使用 opencv Rect 对象的向量。我想要的是擦除 for 循环中的一些向量元素。但是,我似乎无法访问矢量的擦除()功能。我收到以下消息:

/home/christosh/Desktop/recognition-build-desktop-Qt_4_8_1_in_PATH_系统_Release/../faceRec/src/Detection.cpp:88:错误:'class cv::Rect_'有没有名为“erase”的成员

我的代码:

     vector<Rect> faces, eyes;
     for(int l=0; l<eyes.size(); l++)
        if(eyes[l].y> faces[i].height)
            eyes[l].erase;
        
     

【问题讨论】:

你应该从向量中删除,而不是从矩形中删除。请尝试 eye.erase(eyes.begin() + 1); 是的,非常感谢!!我明白你的意思了。 【参考方案1】:

你错过了括号吗?这是一个函数。

eyes[l].erase();

编辑:似乎我误读了您的问题。如果是 stl::vector 擦除,那么您可以从下面的代码中获取提示:您将不得不使用迭代器。

vector<int>::iterator it = res.begin();
for( ; it != res.end(); it++)

    it = res.erase(it);

【讨论】:

这有另一个语法错误。擦除是 std::vector 类的成员,而不是 Rect。

以上是关于从向量中删除opencv rect对象的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV其他常用数据类型

如何在 openCV 中找到 Rect 对象的角?

在 C++ 中将 vector<Rect> OpenCV 转换为 vector<vector<float>>

Opencv比较矩形

从 OpenCV 中的旋转矩阵和平移向量中获取旋转轴

Mat OpenCV Rect ROI:访问冲突