我将灰度模式的图像加载到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);