【问题标题】:Open .hdr files with OpenCV使用 OpenCV 打开 .hdr 文件
【发布时间】:2016-08-12 21:27:29
【问题描述】:

我尝试像这样读取.hdr 文件:

img = cv2.imread(sys.argv[1])
cv2.imshow('Image', img)

这给了我一个 3 通道 8 位 Mat,它要么是(几乎)全白,要么是一张非常暗的图片。所以我想它只给了我一张曝光序列的图像?如何获得包含所有信息的正确Mat

【问题讨论】:

  • 检查this
  • 这是一篇关于加载图像文件列表的文章,而不是 .hdr 文件。

标签: python opencv hdr


【解决方案1】:

您拥有的数据是合并的堆栈,而不是单独的曝光。要正确显示它,您需要对数据进行色调映射。这是正确的程序,例如:

Mat hdr = imread("xxx.hdr",-1); // correct element size should be CV_32FC3
Mat ldr;
Ptr<TonemapReinhard> tonemap = createTonemapReinhard(2.2f);
tonemap->process(hdr, ldr);
ldr.convertTo(ldr, CV_8UC3, 255);

然后用 highgui 显示你的 ldr。

【讨论】:

  • 这是一个用于 Python 问题的 C++,但它确实回答了它。好东西。
  • 哈哈!太集中了。哦,好吧。
  • 是的,色调映射是我试图打开文件的目的。关键是,.hdr 文件的位深度大于每种颜色 8 位,我想避免信息丢失以获得体面的色调映射结果。
  • 是的,如您所见,我评论说读取的 Mat 类型应该是 CV_32FC3。三个通道的浮动。如果您能够检查源代码,那就是它应该被解码的格式。我会花一些时间再次检查来源。
猜你喜欢
  • 1970-01-01
  • 2012-06-29
  • 2020-10-08
  • 2019-11-22
  • 1970-01-01
  • 2013-06-28
  • 2017-09-28
  • 2012-06-27
  • 2012-09-08
相关资源
最近更新 更多