我不確定您是否可以逐個獲取輪廓。但是,如果你有一個vector<vector<Point> >
,你可以在每個迭代輪廓如下:
using namespace std;
vector<vector<Point> > contours;
// use findContours or other function to populate
for(size_t i=0; i<contours.size(); i++) {
// use contours[i] for the current contour
for(size_t j=0; j<contours[i].size(); j++) {
// use contours[i][j] for current point
}
}
// Or use an iterator
vector<vector<Point> >::iterator contour = contours.begin(); // const_iterator if you do not plan on modifying the contour
for(; contour != contours.end(); ++contour) {
// use *contour for current contour
vector<Point>::iterator point = contour->begin(); // again, use const_iterator if you do not plan on modifying the contour
for(; point != contour->end(); ++point) {
// use *point for current point
}
}
因此能夠更好地回答你的問題有關h_next
。給定迭代器it
,在vector
中,下一個元素將是it+1
。用法示例:
vector<vector<Point> >::iterator contour = contours.begin();
vector<vector<Point> >::iterator next = contour+1; // behavior like h_next
+1好天啊!很難跟上OpenCV中的API更改,對吧?! – Geoff