OpenCV保存CV_32FC1图像

Tha*_*lia 5 c++ opencv file

我正在使用的程序是读取一些位图,并期望32FC1图像.

我正在尝试创建这些图像

cv::Mat M1(255, 255, CV_32FC1, cv::Scalar(0,0,0));
cv::imwrite( "my_bitmap.bmp", M1 );
Run Code Online (Sandbox Code Playgroud)

但是当我检查深度时 - 它总是CV_8U

如何创建文件以便它们包含正确的信息?

更新:如果我使用不同的文件扩展名也没有区别 - 例如tif或png

我正在阅读它 - 使用已经实现的代码 - cvLoadImage.

我正在尝试创建现有代码(检查图像类型)可以使用的文件.

我无法转换现有代码中的文件.现有代码不会尝试读取随机图像类型并将其转换为所需类型,但会检查文件是否为所需类型.

我发现了 - 谢谢你的答案 - cv :: imwrite只写整数类型的图像.

有没有另一种方法 - 使用OpenCV或其他东西 - 来编写图像,以便我最终得到CV_32F类型?

再次更新: 读取图像的代码...如果进入cv :: Mat:

cv::Mat x = cv::imread(x_files, CV_LOAD_IMAGE_ANYDEPTH|CV_LOAD_IMAGE_ANYCOLOR);
Run Code Online (Sandbox Code Playgroud)

现有代码:

IplImage *I = cvLoadImage(x_files.c_str(), CV_LOAD_IMAGE_ANYDEPTH|CV_LOAD_IMAGE_ANYCOLOR);
Run Code Online (Sandbox Code Playgroud)

Ham*_*mer 3

您的问题是位图在内部将数据存储为整数而不是浮点数。如果您的问题是保存时出现舍入错误,您将需要使用不同的文件格式或在保存之前放大数据,然后在保存后缩小数据。如果您只想将读取文件后得到的矩阵转换为浮点数,可以使用 cv::convertto