OpenCV:如何读取浮动图像

时间:2013-03-04 17:41:15

标签: c++ opencv io mat

我在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的正确矩阵

由于

1 个答案:

答案 0 :(得分:3)

请参阅imwrite

  

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

depthconvertTo