我有矢量" lines2"我从HoughLinesP转型得到的。我有二进制图像的距离变换。 Lines2只有行的起点和终点,因此使用LineIterator我遍历所有行并获取这些点之间的坐标。然后我使用这些坐标从距离图像中获取值。最后,我想将所有值存储在" lines3"中,而不是存储i ++,存储下一个等等。 这是代码:
distanceTransform(img_bin, img_dist, CV_DIST_C, 3);
imshow("Distance Transform Image", img_dist);
//Go through the merged lines with LineIterator to get all the points between the endings
vector<vector<int>> lines3(lines2.size());
int val;
for (size_t i = 0; i < lines2.size(); i++) {
LineIterator it(img_dist, Point(lines2[i][0], lines2[i][1]), Point(lines2[i][2], lines2[i][3]), 8);
vector<Point> points(it.count);
for (int j = 0; j < it.count; j++, ++it)
{
points[j] = it.pos();
//cout << "points[j]: " << points[j] << endl;
//check the value of pos() at the distance transformated image and store it in lines3
val = img_dist.at<float>(points[j].y, points[j].x);
//lines3(i,j)[0].push_back(val);
//lines3[i][j].push_back(val);
//lines3[i][j] = val;
//lines3(i,j) = val;
//lines3[j].push_back(val);
lines3[i][j].push_back(val); //THIS LINE doeasn't even compile
}
}
问题:我该怎么做? push_back在这里不起作用。
编辑: 在第3行&#39;添加了一些初始大小。但仍然不知道如何用[i] [j]用线条和线条填充向量。
lines3 [j]的.push_back(VAL); //此线路编译但运行时失败,出现越界错误(当然)
答案 0 :(得分:1)
我将此发布给未来,所以也许其他人不会像我这样坚持下去。 正如DanMašek在评论中提到的,我需要更换
lines3[i][j].push_back(val);
与
lines3[i].push_back(val);
现在它工作正常!谢谢!