OpenCV中图像的以下两行有什么区别

what is the difference in between the following two lines in opencv for images

本文关键字:两行 区别 什么 图像 OpenCV      更新时间:2023-10-16
vector<Mat> images;
vector<int> labels;

我假设Mat是图像的结构,int是数据类型。但什么是vector?它是一个二维数组吗?请提前澄清我的疑问。

在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;

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 矢量