【问题标题】:OpenCV: how to read an image of floatsOpenCV:如何读取浮点图像
【发布时间】:2013-03-04 17:41:15
【问题描述】:

我在 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&lt;float&gt;(5,5) 这样访问时。

如何读回写入其中的数据?例如,在 matlab 中我可以这样做:

m = imread("out.png") 

它给了我正确的 1 矩阵

谢谢

【问题讨论】:

    标签: c++ opencv io mat


    【解决方案1】:

    imwrite

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

    depth, convertTo

    【讨论】:

      猜你喜欢
      • 2019-11-13
      • 1970-01-01
      • 2018-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-12
      • 1970-01-01
      • 2010-12-04
      相关资源
      最近更新 更多