我希望使用OpenCV对现有的HDR映像执行算术操作,然后以.hdr格式编写HDR文件。算术操作对这个问题并不重要,所以让我们简单地说,我想读取一个.hdr文件,然后将它写入相同的格式。
我试着按照通常的方式来做,通过第一次读取hdr文件
img = cv2.imread('original.hdr', -1).astype(np.float32)然后把它写成
cv2.imwrite('new_original.hdr', img)我使用Mac的查找器和OpenHDRViewer来查看HDR图像。当我运行上面的代码时,Mac能够正确地显示new_original.hdr文件。但是当我试图用OpenHDRViewer看到相同的hdr图像时,它会给出一个错误的说法-
不支持此文件类型!本网站目前不支持色调映射或LDR图像。稍后再检查更新。
new_original.hdr不是一个有效的HDR映像吗?
当我使用传统的cv2.imwrite()来编写HDR图像时,是否有一些基于格式的信息丢失。怎样才是正确的方法?
发布于 2020-04-29 14:09:35
@MukulKhanna我也面临着同样的问题。但是,通过在imwrite()中将扩展从.exr更改为.hdr,就可以在OpenHDRViewer上查看图像。
发布于 2022-03-02 08:32:14
好像是你写的
img = cv2.imread('original.hdr', -1).astype(np.float32)
这将导致float32数据类型的图像,范围在0~255之间。
我想float32图像的强度应该限制在0~1左右。(无论如何,即使对于hdr图像,255 x的动态范围太高,无法显示)
https://stackoverflow.com/questions/55550381
复制相似问题