opencv for images中以下两行之间有什么区别?

时间:2014-02-16 10:21:31

标签: c++ opencv vector

vector<Mat> images;
vector<int> labels;

我假设Mat是图像的结构,int是数据类型。但是什么是vector? 它是一个二维数组吗?请事先明确表示怀疑。

2 个答案:

答案 0 :(得分:1)

在C ++中,std::vector是一个封装动态大小数组的序列容器。这是一个 1 - 维数组,其元素是连续存储的。

  • 对于vector<Mat> images;images被声明为1 - 维数组,其元素为cv::Mat s。

    要定义此类元素的2维数组,您可以使用vector<vector<Mat>> images_2d;

  • 对于vector<int> labels;labels被声明为1 - 维数组,其元素为int s。

    要定义此类元素的2维数组,您可以使用vector<vector<int>> labels_2d;

答案 1 :(得分:0)

vector<int> labels表示标签矢量。因此,只要您想在此向量中插入元素,就可以label.push_back(elementToBeInserted);

每当您想要访问此向量中存在的元素时,您可以执行以下操作:

for(int i=0; i<labels.size(); i++)
{
    int element = labels[i];
    cout<<Element: <<element;

}

类似的描述适用于vector<Mat> images;。还有一件事是Mat代表Matrix,图像存储为矩阵。

PS: vector< vector<int> >labels;将代表2D矢量