初始化和显示整数向量

时间:2016-06-06 15:33:05

标签: c++

我正在运行此循环以获取连接组件的标签(Opencv的connectedComponentsWithStats),这些标签在单独的向量中大于某个阈值“areaVal”。 然而,当我测试循环时,我得到了一些意想不到的天文数字,并且我得到了一些零,这首先被排除在循环之外。

最重要的是,当我运行相同的代码两次时,我在labelIndex向量中得到不同的值!

我迫切需要帮助。

vector<int> labelIndex; 
//starting from 1 to exclude the background label
cout << "Number of labels: " << nLabels << ". Entering loop\n\n"; //checkpoint
for (int i=1; i<nLabels; i++)
{
    //cout << i << ") "; //checkpoint
    int area = statsv.at<int>(i, CC_STAT_AREA);
    if (area >= areaVal)
    {
        labelIndex.push_back(i);
        cout << labelIndex[i] << "   "; //checkpoint
    }
}

Image of the different results

1 个答案:

答案 0 :(得分:1)

当您执行此操作时,您正在访问labelIndex越界,因为i从1开始:

cout << labelIndex[i] << " "; //checkpoint

如果您的目标是打印添加到矢量的最后一个值,那么以下内容会更安全:

cout << labelIndex.back() << " "; //checkpoint

请参阅std::vector::back()功能文档。

相关问题