图像的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<Mat> images;
,images
被声明为1
-维数组,其元素为cv::Mat
s。
要定义此类元素的2
-dimension 数组,您可以使用vector<vector<Mat>> images_2d;
。
对于vector<int> labels;
,labels
被声明为1
-维数组,其元素为int
s。
要定义此类元素的2
-dimension 数组,您可以使用vector<vector<int>> labels_2d;
。
【讨论】:
【参考方案2】: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;
将代表一个二维向量
【讨论】:
是类似于数组的向量,如果是,那么差异是什么 不涉及编程细节,我想说它们是相似的,但主要区别在于vectors
的情况下,您不需要指定大小。每当您想插入一个元素时,您都可以通过label.push_back()
进行操作,并将其存储在下一个可用位置。如果它对您有用,请投票/接受我的回答。以上是关于图像的opencv中以下两行之间有啥区别的主要内容,如果未能解决你的问题,请参考以下文章