背景
exr图片是一种开放标准的高动态范围图像格式,也算比较常用吧。本文简单记录一下,如何用python读取exr文件。
代码
- 获取exr图片的属性
import OpenEXR
file = OpenEXR.InputFile(image_path)
print(file.header())
该代码片段能够获取exr图片许多重要的属性,以下给出了一些例子
{'displayWindow': (0, 0) - (1023, 767), #图片的大小
'pixelAspectRatio': 1.0,
'screenWindowWidth': 1.0,
'screenWindowCenter': (0.0, 0.0),
'channels': {'G': FLOAT (1, 1)}, #图片中的通道信息,此处是灰度,所以是G;如果是彩色的话,就是RGB,看情况;
'dataWindow': (0, 0) - (1023, 767),
'compression': ZIP_COMPRESSION,
'lineOrder': INCREASING_Y}
- 读取图片并转成numpy
file = OpenEXR.InputFile(image_path)
pt = Imath.PixelType(Imath.PixelType.FLOAT)
dw = file.header()['dataWindow']
size = (dw.max.x - dw.min.x + 1, dw.max.y - dw.min.y + 1)
# G的来源来自第一个代码片段,F表示是浮点型
image = [Image.frombytes("F", size, file.channel(c, pt)) for c in "G"]