图像的opencv中以下两行之间有啥区别

Posted

技术标签:

【中文标题】图像的opencv中以下两行之间有啥区别【英文标题】: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 是什么? 它是一个二维数组吗?请提前清除我的疑问谢谢。

【问题讨论】:

【参考方案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() 进行操作,并将其存储在下一个可用位置。如果它对您有用,请投票/接受我的回答。

以上是关于图像的opencv中以下两行之间有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

ros和opencv有啥区别

javacv跟opencv有啥区别

以下 3 个 opencv Mat 实例有啥区别?

OPENCV 中的 cvtype 值有啥区别?

“边缘检测”和“图像轮廓”之间的区别

计算机视觉中的特征和关键点有啥区别?