如何存储新矢量中左侧的部分轮廓点,其类型为<vector <vector <point>&gt;在OpenCV中

时间:2017-08-14 12:00:37

标签: c++ opencv vector point contour

我想在左侧范围存储轮廓点,因此我创建了一个新的矢量LeftHandSide_contours来存储。但是,我编译了以下代码:

vector<vector<Point>> contours;
vector<Vec4i> hierarchy;

findContours(thresed, contours, hierarchy, CV_RETR_LIST, CV_CHAIN_APPROX_NONE, Point(0, 0));

vector<vector<Point>> LeftHandSide_contours(contours.size());
int k=0,t=0;
for (int i = 0; i < contours.size(); i++) {
        for (int j = 0; j < contours[i].size(); j++) {
            if (contours[i][j].x < src.cols / 2) {     <---- lefthand side frame 
                LeftHandSide_contours[k][t] = contours[i][j];
                t++;
        }
if(contours[i].size!=0) k++;
}

它给了我以下错误:

  

行:1740表达式:向量下标超出范围

1 个答案:

答案 0 :(得分:0)

在访问某些索引之前,您应该为矢量矢量分配空间:

 vector<vector<Point>> LeftHandSide_contours(
    contours.size() ,
    std::vector<Point>(src.cols)
 );

应该正确保留内存。