1

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

谢谢

4

1 回答 1

4

imwrite

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

深度转换为

于 2013-03-04T18:11:00.447 回答