python - 在 Python 中使用 OpenCV 编写 HDR 图像的正确方法是什么?
问题描述
我想使用 OpenCV 对现有的 HDR 图像执行算术运算,然后以 .hdr 格式编写 HDR 文件。算术运算对这个问题并不重要,所以假设我想读取一个 .hdr 文件,然后将其写入相同的格式。
我尝试按照通常的方式进行操作,首先将 hdr 文件读取为
img = cv2.imread('original.hdr', -1).astype(np.float32)
然后把它写成
cv2.imwrite('new_original.hdr', img)
我使用 Mac 的 Finder 和OpenHDRViewer来查看 HDR 图像。当我运行上述代码时,Mac finder 能够正确显示该new_original.hdr
文件。但是当我尝试使用 OpenHDRViewer 查看相同的 hdr 图像时,它会给出一个错误消息 -
不支持此文件类型!该站点目前尚不支持色调映射或 LDR 图像。稍后再回来查看更新。
不是new_original.hdr
有效的 HDR 图像吗?
当我使用传统格式cv2.imwrite()
编写 HDR 图像时,是否会丢失一些基于格式的信息。这样做的正确方法是什么?
解决方案
@MukulKhanna 我遇到了同样的问题。但是,通过在 imwrite() 中将扩展名从 .hdr 更改为 .exr 就可以了,我可以在OpenHDRViewer上查看图像。
推荐阅读
- c++ - 收集学生成绩,计算平均成绩,字母成绩并使用C++显示
- excel - 根据备用列中的条件对值求和
- javascript - 保留每个项目的索引位置的数组的笛卡尔积
- c++ - 抛弃 volatile 关键字在这里有意义吗?
- python - 如何使用 Python 按条件查找和删除 XML 文件(带有名称空间)中的元素
- java - 在一个类中创建一个自己的对象,这是一个无休止的递归,为什么JAVA是允许的?
- r - 如何将 dunn.test 应用于 R 中的数据帧?
- javascript - 如果选中任何复选框并在未选中任何复选框时禁用它,如何启用提交按钮?
- javascript - 我无法访问两个对象中的 id
- windows - minifilter驱动的可能安装位置