2014-01-07 70 views
0

我正在使用opencv矩形对象的矢量。我想要的是删除for循环中的一些向量元素。但是,似乎我没有访问vector的擦除()函数。我收到以下消息:从矢量中清除opencv矩形对象

/home/christosh/Desktop/recognition-build-desktop-Qt_4_8_1_in_PATH_System_Release/../faceRec/src/Detection.cpp:88: error: 'class cv::Rect_' has no member named 'erase'

我的代码:

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

你应该从向量中删除,而不是从rect中删除。请尝试eyes.erase(eyes.begin()+ 1); – baci

+0

绝对谢谢!我明白了你的观点。 –

回答

2

您忘括号?这是一个功能。

eyes[l].erase(); 

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

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

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