You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python从EXR文件提取RGBA、Z通道并保存为独立文件

Python提取EXR通道并保存为独立文件

首先得装必要的依赖库,执行下面的命令:

pip install openexr numpy pillow

下面是完整的代码,能读取EXR文件的RGBA和Z通道,分别保存成单独的图像文件:

import OpenEXR
import Imath
import numpy as np
from PIL import Image

def extract_exr_channels(exr_path):
    # 打开EXR文件
    exr_file = OpenEXR.InputFile(exr_path)
    
    # 获取图像尺寸
    dw = exr_file.header()['dataWindow']
    width = dw.max.x - dw.min.x + 1
    height = dw.max.y - dw.min.y + 1
    
    # 定义通道类型(浮点型)
    pt = Imath.PixelType(Imath.PixelType.FLOAT)
    
    # 读取RGBA和Z通道数据
    channels = ['R', 'G', 'B', 'A', 'Z']  # 部分EXR的深度通道可能叫'Depth',需根据实际调整
    channel_data = {}
    
    for chan in channels:
        if chan in exr_file.header()['channels']:
            # 读取通道数据并转为numpy数组
            data = exr_file.channel(chan, pt)
            channel_data[chan] = np.frombuffer(data, dtype=np.float32).reshape((height, width))
    
    # 保存RGBA单通道为PNG(线性浮点数据归一化到0-255)
    for chan in ['R', 'G', 'B', 'A']:
        if chan in channel_data:
            normalized = (channel_data[chan] * 255).astype(np.uint8)
            img = Image.fromarray(normalized)
            img.save(f'{exr_path}_{chan}.png')
    
    # 保存Z通道:两种可选方式
    if 'Z' in channel_data:
        z_data = channel_data['Z']
        # 方式1:归一化后存PNG(适合可视化)
        z_min = z_data.min()
        z_max = z_data.max()
        normalized_z = ((z_data - z_min) / (z_max - z_min) * 255).astype(np.uint8)
        img_z_png = Image.fromarray(normalized_z)
        img_z_png.save(f'{exr_path}_Z_normalized.png')
        
        # 方式2:保存为浮点TIFF(保留原始深度精度,适合后期处理)
        img_z_tiff = Image.fromarray(z_data)
        img_z_tiff.save(f'{exr_path}_Z_float.tiff')

# 调用示例,替换成你的EXR文件路径
extract_exr_channels('your_input.exr')

关键点说明

  • 通道名要匹配你的EXR文件:可以通过print(exr_file.header()['channels'])查看所有通道名,调整channels列表
  • RGBA通道默认是线性浮点数据,直接乘255转8位整数即可保存为常规PNG
  • Z通道如果需要保留原始浮点精度,优先存TIFF格式;仅做可视化的话,归一化后存PNG更便捷
  • 你找到的代码只实现了通道读取和信息打印,缺少将数组转为图像并保存的逻辑,上面的代码补充了这部分核心步骤

内容的提问来源于stack exchange,提问作者Vitaliy V.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 02:10:37