【问题标题】:what is the difference in between the following two lines in opencv for images图像的opencv中以下两行之间有什么区别
【发布时间】:2014-02-16 10:21:30
【问题描述】:
vector<Mat> images;
vector<int> labels;

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

【问题讨论】:

    标签: c++ opencv vector


    【解决方案1】:

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

    • 对于vector&lt;Mat&gt; images;images 被声明为1-维数组,其元素为cv::Mats。

      要定义此类元素的2-dimension 数组,您可以使用vector&lt;vector&lt;Mat&gt;&gt; images_2d;

    • 对于vector&lt;int&gt; labels;labels 被声明为1-维数组,其元素为ints。

      要定义此类元素的2-dimension 数组,您可以使用vector&lt;vector&lt;int&gt;&gt; labels_2d;

    【讨论】:

      【解决方案2】:

      vector&lt;int&gt; labels 表示标签向量。所以,无论何时你想在这个向量中插入一个元素,你都可以通过label.push_back(elementToBeInserted); 来实现。

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

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

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

      PS: vector&lt; vector&lt;int&gt; &gt;labels; 将代表一个二维向量

      【讨论】:

      • 是类似于数组的向量,如果是,那么差异是什么
      • 不涉及编程细节,我想说它们是相似的,但主要区别在于vectors 的情况下,您不需要指定大小。每当您想插入一个元素时,您都可以通过label.push_back() 进行操作,并将其存储在下一个可用位置。如果它对您有用,请投票/接受我的回答。
      猜你喜欢
      • 2018-09-05
      • 1970-01-01
      • 1970-01-01
      • 2019-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-23
      • 2013-12-03
      相关资源
      最近更新 更多