【问题标题】:OpenCV vector of vectors into cv::Mat向量的 OpenCV 向量到 cv::Mat
【发布时间】:2013-02-28 16:19:33
【问题描述】:

我在 n 行和 m 列的 std::vector<std::vector<double>>结构中有某些值,我想将其转换为等效的 cv::Mat 对象。这是我一直在使用的代码,但出现错误:

dctm 是一个本地参数,定义为: std::vector<std::vector<double>>

cv::Mat dctmat = cvCreateMat(dctm.size(), dctm[0].size(), CV_16SC1);
for (size_t i = 0; i < dctm.size(); i++) {
    for (size_t j = 0; j < dctm[i].size(); j++) {
        dctmat.at<double>(i, j) = dctm[i][j];
    }
}

【问题讨论】:

  • 你得到的错误是什么?

标签: c++ opencv vector mat


【解决方案1】:

dctmat 有一个CV_16SC1 类型,表示有符号短矩阵。但是您尝试使用不连贯的dctmat.at&lt;double&gt;(i, j) 访问它。将您的矩阵定义为CV_64FC1 或使用dctmat.at&lt;short&gt;(i, j) 访问它(第一个解决方案更好,因为您有一个double 的向量)。

【讨论】:

    【解决方案2】:

    这是我的转换例程的模板版本

    例程

    template<typename _Tp> static  cv::Mat toMat(const vector<vector<_Tp> > vecIn) {
        cv::Mat_<_Tp> matOut(vecIn.size(), vecIn.at(0).size());
        for (int i = 0; i < matOut.rows; ++i) {
            for (int j = 0; j < matOut.cols; ++j) {
                matOut(i, j) = vecIn.at(i).at(j);
            }
        }
        return matOut;
    }
    template<typename _Tp> static  vector<vector<_Tp> > toVec(const cv::Mat_<_Tp> matIn) {
        vector<vector<_Tp> > vecOut(matIn.rows);
        for (int i = 0; i < matIn.rows; ++i) {
            vecOut[i].resize(matIn.cols);
            for (int j = 0; j < matIn.cols; ++j) {
                vecOut[i][j] =  matIn.at<_Tp>(i, j);
            }
        }
        return vecOut;
    }
    

    【讨论】:

      【解决方案3】:

      Here 在 Opencv 文档中您可以找到:

      Mat::Mat(int rows, int cols, int type, void* data, size_t step=AUTO_STEP)
      Mat::Mat(Size size, int type, void* data, size_t step=AUTO_STEP)
      ...
      

      那么,你可以这样使用:

      Mat dctmat(dctm.size(), dctm[0].size(), CV_16SC1, dctm.data());
      

      【讨论】:

      • 你试过了吗? dctm.data() 不适用于我作为 vector 的vector
      猜你喜欢
      • 1970-01-01
      • 2013-02-20
      • 1970-01-01
      • 1970-01-01
      • 2013-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多