【问题标题】:openCV: Saving Mat to vector<vector<int> >openCV:将垫子保存到矢量<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() 每像素
  • 事实上,我愿意。它有什么问题?

标签: c++ opencv vector save mat


【解决方案1】:

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

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

【讨论】:

  • 不是每次都增加一个,vector的大小在需要的时候一般会翻倍。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-18
  • 1970-01-01
  • 2014-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-25
相关资源
最近更新 更多