如何读取浮点数的图像

OpenCV: how to read an image of floats

本文关键字:浮点数 图像 读取 何读取      更新时间:2023-10-16

我在openCV中创建了一个Mat如下:

cv::Mat m = cv::Mat(10,10, CV_32FC1);
for(int i = 0; i < 10; i++){
    for(int j = 0; j < 10; j++){
        m.at<float>(i,j) = 1;
     }
}

并将其保存到磁盘:

imwrite("out.png", m);

我现在试着这样读:

cv::Mat m = imread("out.png", CV_LOAD_IMAGE_UNCHANGED);

但是m中的数据似乎是完全随机的,当像m.at<float>(5,5)这样访问时。

我怎么能读回写在它的数据?例如,在matlab中我可以这样做:

m = imread("out.png") 

它给出了正确的1的矩阵

谢谢

参见imwrite

imwrite函数将图像保存到指定的文件中。图像格式是根据文件名扩展名选择的(有关扩展名列表,请参阅imread())。只有8位(或16位无符号(CV_16U)在PNG, JPEG 2000和TIFF的情况下)单通道或3通道(与' BGR '通道顺序)图像可以使用此功能保存。如果格式,深度或通道顺序不同,在保存前使用Mat::convertTo()和cvtColor()进行转换。或者,使用通用的XML I/O函数将图像保存为XML或YAML格式。

深度,convertTo