我将图像以灰度模式加载到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做了一些我不知道的事情?
答案 0 :(得分:1)
&#34;我使用image.convertTo(image,CV_32F);将数据类型转换为double&#34;
不,那将转换为 float 。如果你想要 double ,请改用:
image.convertTo(image,CV_64F);