roll-ai's picture
Upload 161 files
b14067d verified
import os
import numpy as np
import OpenEXR
import Imath
from fire import Fire
def npz_to_multiframe_exr(input_npz: str, output_folder: str):
os.makedirs(output_folder, exist_ok=True)
# Load the .npz file
data = np.load(input_npz)
depth_frames = data["depth"] # Replace 'depth' with the correct key
num_frames, height, width = depth_frames.shape
# Iterate over each frame and save as a separate EXR file
for i, frame in enumerate(depth_frames):
output_exr = f"{output_folder}/frame_{i:04d}.exr"
# Prepare EXR header for each frame
header = OpenEXR.Header(width, height)
header["channels"] = {
"Z": Imath.Channel(Imath.PixelType(Imath.PixelType.FLOAT))
}
# Create EXR file and write the frame
exr_file = OpenEXR.OutputFile(output_exr, header)
exr_file.writePixels({"Z": frame.tobytes()})
exr_file.close()
print(f"Saved frame {i} to {output_exr}")
if __name__ == "__main__":
# Specify the input .npz file and output folder
# npz_to_multiframe_exr(r"path_to_input", r"path_to_output")
Fire(npz_to_multiframe_exr)