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()-&gt;getFinder()-&gt;getImage() 每像素 事实上,我愿意。它有什么问题? 【参考方案1】:

根据c++ reference 调用push_back 将元素附加到向量,因此它会从末尾增加大小

因此您的大小至少为 2*cols 。您应该初始化一个空向量。或使用[] 运算符。

【讨论】:

不是每次都增加一个,vector的大小在需要的时候一般会翻倍。

以上是关于openCV:将垫子保存到矢量<vector<int>>的主要内容,如果未能解决你的问题,请参考以下文章

c ++如何将视频序列放入OpenCV中的vector<Mat>?

创建垫子后从字节向量将图像加载到垫子上

将vector<Mat>转换为矢量文件Opencv

opencv::meanStdDev 带有矢量<vector<double>>

如何检索轮廓点 - 使用 opencv 转换为矢量?

在vector<Mat> Opencv中加载许多图像