我想读取 exr 文件格式的图像并查看相应位置的像素强度。并且还想将它们堆叠在一起以将它们放入神经网络。我怎样才能对这些格式进行正常的图像处理?请帮我做这件事!
我已经使用 OpenEXR 文件尝试过这段代码,但无法继续。
import OpenEXR
file = OpenEXR.InputFile('file_name.exr')
我希望看到像这样的普通图像处理工具
file.size()
file.show()
file.write('another format')
file.min()
file.extract_channels()
file.append('another exr file')
最佳答案
OpenEXR 似乎缺少花哨的图像处理功能,例如显示图像或将图像保存为不同的格式。为此,我建议您使用 OpenCV
,它具有丰富的图像处理功能。
您可能需要做的是:
- 仅使用
OpenEXR
读取exr
,然后提取 channel 并将它们转换为 numpy 数组,如rCh = np.asarray(rCh, dtype=np.uint8)
- 从这些 numpy 数组创建一个 RGB 图像,如
img_rgb = cv2.merge([b, g, r])
。 - 为您列出的操作使用 OpenCV 函数:
- 尺寸:
img_rgb.shape
- 显示:
cv2.imshow(img_rgb)
- 写入:
cv2.imwrite("path/to/file.jpg", img_rgb)
- 最小值:
np.min(b)
,np.min(g)
,np.min(r)
- 提取 channel :
b, g, r = cv2.split(img_rgb)
- 尺寸:
关于python-2.7 - 读取、处理和显示 .EXR 格式图像中的像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55556277/