openCV:将垫子保存到矢量<vector<int>>
Posted
技术标签:
【中文标题】openCV:将垫子保存到矢量<vector<int>>【英文标题】:openCV: Saving Mat to vector<vector<int> > 【发布时间】:2014-01-25 13:25:35 【问题描述】:我有一个名为 myImage 的 cv::Mat,我想将它保存到一个名为 savedVec 的 std::vector >。这是我写的代码:
for (int i = 0; i < myImage.rows; ++i)
std::vector<int> row(myImage.cols);
for (int j = 0; j < myImage.cols; ++j)
row.push_back(Play::getInstance()->getFinder()->getImage().at<uchar>(i, j));
savedVec.push_back(row);
我现在的问题是,不知何故,savedVec[0].size()
产生了两倍于 myImage.cols 的大小,但它们应该是相同的,不是吗?
请告诉我我做错了什么。
【问题讨论】:
只是希望,您不是真的调用Play::getInstance()->getFinder()->getImage()
每像素。
事实上,我愿意。它有什么问题?
【参考方案1】:
根据c++ reference 调用push_back
将元素附加到向量,因此它会从末尾增加大小
因此您的大小至少为 2*cols
。您应该初始化一个空向量。或使用[]
运算符。
【讨论】:
不是每次都增加一个,vector
的大小在需要的时候一般会翻倍。以上是关于openCV:将垫子保存到矢量<vector<int>>的主要内容,如果未能解决你的问题,请参考以下文章
c ++如何将视频序列放入OpenCV中的vector<Mat>?