Стереть прямоугольные объекты opencv из вектора

Я использую вектор объектов opencv Rect. Я хочу стереть некоторые элементы векторов внутри цикла for. Однако, похоже, у меня нет доступа к функции стирания() вектора. Я получаю следующее сообщение:

/home/christosh/Desktop/recognition-build-desktop-Qt_4_8

     vector<Rect> faces, eyes;
     for(int l=0; l<eyes.size(); l++){
        if(eyes[l].y> faces[i].height){
            eyes[l].erase;
        }
     }
in_PATH_System_Release/../faceRec/src/Detection.cpp:88: ошибка: 'class cv::Rect_' не имеет названного члена 'стереть'

Мой код:

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

person Jose Ramon    schedule 07.01.2014    source источник
comment
вы должны удалить из вектора, а не из прямоугольника. пожалуйста, попробуйте eyes.erase(eyes.begin() + 1);   -  person baci    schedule 07.01.2014
comment
да точно спасибо!! Японял твою точку зрения.   -  person Jose Ramon    schedule 07.01.2014


Ответы (1)


Вы пропустили скобки? Это функция.

eyes[l].erase();

Изменить: кажется, я неправильно понял ваш вопрос. Если это stl::vector erase, вы можете воспользоваться подсказкой из кода ниже: вам придется использовать итератор.

vector<int>::iterator it = res.begin();
for( ; it != res.end(); it++)
{
    it = res.erase(it);
}
person Digital_Reality    schedule 07.01.2014
comment
это еще одна синтаксическая ошибка. стирание является членом класса std::vector, а не Rect. - person baci; 07.01.2014