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的区域看到了巨大的值,这是不可能的。我是在矩阵中迭代错误,还是函数转换做了一些我不知道的事情?

"我使用image。convertTo(图片、CV_32F);将数据类型转换为双"

不,它将转换为float。如果您想要,请使用:

形象。convertTo(图片、CV_64F);

相关内容

  • 没有找到相关文章

最新更新