将矢量数组加载到矢量RGB数组时遇到问题。
之后rgbv = pointcloud_RGB[i];
我得到一个错误"矢量下标超出范围"。有人能指引我吗。
问候
Suhas
const std::vector<cv::Vec3b>& pointcloud_RGB;
for (unsigned int i=0; i<points.size(); i++) {
cv::Vec3b rgbv(255,255,255);
if (pointcloud_RGB.size() >= i) {
rgbv = pointcloud_RGB[i];
}
}
您有一个off-by-one错误。
如果pointcloud_RGB.size() == i
,则i
是经过矢量末尾的一个元素。
要解决此问题,只需更改您的条件即可:
if (pointcloud_RGB.size() >= i) {
对此:
if (pointcloud_RGB.size() > i) {
for (unsigned int i=0; i<points.size(); i++) {
cv::Vec3b rgbv(255,255,255);
if (i<pointcloud_RGB.size() ) {
rgbv = pointcloud_RGB[i];
}
}
这将修复超出限制的错误