我想在左侧范围存储轮廓点,因此我创建了一个新的矢量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表达式:向量下标超出范围
答案 0 :(得分:0)
在访问某些索引之前,您应该为矢量矢量分配空间:
vector<vector<Point>> LeftHandSide_contours(
contours.size() ,
std::vector<Point>(src.cols)
);
应该正确保留内存。