OpenCV convertTo如何转换?

时间:2014-03-17 20:22:58

标签: c++ opencv

我将图像以灰度模式加载到Mat image。我用image.convertTo(image, CV_32F); 将数据类型转换为double。我想将图像转换为vector<double>,因此我按以下方式遍历矩阵:

    int channels = image.channels();
    int nRows = image.rows;
    int nCols = image.cols;
    vector<double> vectorizedMatrix (nRows*nCols);

    if (image.isContinuous()) {
        nCols *= nRows;
        nRows = 1;
    }



    double* pI;
    int k = 0;

    for (int i=0; i<nRows; i++) {
        pI = image.ptr<double>(i);
        for (int j=0;j<nCols;j++) {
            vectorizedMatrix.at(k) = pI[j];
            k++;
        }
    }

    return vectorizedMatrix;

当检查我得到的数据时,我看到10 ^ 10区域内的巨大值,这是不可能的。我是否错误地通过矩阵进行迭代或者函数convertTo做了一些我不知道的事情?

1 个答案:

答案 0 :(得分:1)

&#34;我使用image.convertTo(image,CV_32F);将数据类型转换为double&#34;

不,那将转换为 float 。如果你想要 double ,请改用:

image.convertTo(image,CV_64F);