背景
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_np = [Image.frombytes("F", size, file.channel(c, pt)) for c in "G"]