c+中是否有函数+;使用opencv可以将图像转换为MATLAB中im2double的两倍精度? 我用OpenCV将一些在MATLAB中开发的代码翻译成C++。我正在加载RGB格式的图像,如: Mat img; img = imread('path to directory', CV_LOAD_IMAGE_COLOR);

c+中是否有函数+;使用opencv可以将图像转换为MATLAB中im2double的两倍精度? 我用OpenCV将一些在MATLAB中开发的代码翻译成C++。我正在加载RGB格式的图像,如: Mat img; img = imread('path to directory', CV_LOAD_IMAGE_COLOR);,c++,matlab,opencv,type-conversion,double-precision,C++,Matlab,Opencv,Type Conversion,Double Precision,我只想将此图像转换为两倍精度,因为im2double()在MATLAB中实现了这一点。是否有任何功能允许这样做?我可以使用convertTo()函数吗 我试着做: img.convertTo(img, CV_64FC3, 255.0); 但它不起作用。你能帮我吗 更新:谢谢你的回答。我现在所做的是 int i, k; Mat img, img_dbprec; img = imread('path to directory', CV_LOAD_IMAGE_COLOR); //Loads the

我只想将此图像转换为两倍精度,因为
im2double()
在MATLAB中实现了这一点。是否有任何功能允许这样做?我可以使用
convertTo()
函数吗

我试着做:

img.convertTo(img, CV_64FC3, 255.0);
但它不起作用。你能帮我吗

更新:谢谢你的回答。我现在所做的是

int i, k;
Mat img, img_dbprec;

img = imread('path to directory', CV_LOAD_IMAGE_COLOR); //Loads the image in the RGB format
img.convertTo(img_dbprec, CV_64FC3,1.0/255.0);//Convert image to double precision
for(i=0; i<img_dbprec.rows; i++){
   for(k=0; k<img_dbprec.cols; k++){
       cout << (double) img_dbprec.data[img_dbprec.step[0]*i + img_dbprec.step[1]* k + 0] << " ";
       cout << (double) img_dbprec.data[img_dbprec.step[0]*i + img_dbprec.step[1]* k + 1] << " ";
       cout << (double) img_dbprec.data[img_dbprec.step[0]*i + img_dbprec.step[1]* k + 2] << endl;
    }
}

这不是我想要的。你能告诉我我做错了什么吗?

你的比例因子好像颠倒了。尝试:

Mat dimg;
img.convertTo( dimg, CV_64FC3, 1.0/255.0 );

看起来你的比例因子是颠倒的。尝试:

Mat dimg;
img.convertTo( dimg, CV_64FC3, 1.0/255.0 );

你的方法是正确的。然而,根据文档,您插入的255.0不是RGB矩阵的最大值,而是一个比例因子。所以,您可能将所有像素值乘以255,这将使它们超出[0255]范围。另外,(取决于您使用的版本),创建新的目标值更安全

Mat doubleImg;
img.convertTo(doubleImage, CV_64FC3);

你的方法是正确的。然而,根据文档,您插入的255.0不是RGB矩阵的最大值,而是一个比例因子。所以,您可能将所有像素值乘以255,这将使它们超出[0255]范围。另外,(取决于您使用的版本),创建新的目标值更安全

Mat doubleImg;
img.convertTo(doubleImage, CV_64FC3);

关于“不工作”,你能更具体一点吗?如果你完全跳过比例因子(
1.0/255.0
),会发生什么(在输出方面)?那么像素值的范围是什么?如果我跳过比例因子,当我读取图像时,我会得到与MATLAB中相同的值(范围0-255)。在执行此操作(convertTo)时,我得到的值仍然在0-255范围内,而不是0.0-1.0范围内。因此,如果您使用的是比例
1.0/255.0
1.0
?啊,不!我不明白你的问题。我想你说过省略convertTo函数。如果我将比例因子更改为1.0,我仍然会得到0-255范围内的整数值,但它们是不同的。现在我有很多0。你能更具体地说“不工作”吗?如果你完全跳过比例因子(
1.0/255.0
),会发生什么(在输出方面)?那么像素值的范围是什么?如果我跳过比例因子,当我读取图像时,我会得到与MATLAB中相同的值(范围0-255)。在执行此操作(convertTo)时,我得到的值仍然在0-255范围内,而不是0.0-1.0范围内。因此,如果您使用的是比例
1.0/255.0
1.0
?啊,不!我不明白你的问题。我想你说过省略convertTo函数。如果我将比例因子更改为1.0,我仍然会得到0-255范围内的整数值,但它们是不同的。现在我有很多0。