利用Python将EXR格式文件转换为HDR文件

主要是利用OpenEXR库读取EXR文件,然后利用imageio库来写回HDR

import numpy
import OpenEXR
import Imath
import imageio
import glob
import os


def ext2hdr(exrpath):
    File = OpenEXR.InputFile(exrpath)
    PixType = Imath.PixelType(Imath.PixelType.FLOAT)
    DW = File.header()['dataWindow']
    Size = (DW.max.x - DW.min.x + 1, DW.max.y - DW.min.y + 1)
    rgb = [numpy.fromstring(File.channel(c, PixType), dtype=numpy.float32) for c in 'RGB']
    r =numpy.reshape(rgb[0],(Size[1],Size[0]))
    g =numpy.reshape(rgb[1],(Size[1],Size[0]))
    b =numpy.reshape(rgb[2],(Size[1],Size[0]))
    hdr = numpy.zeros((Size[1],Size[0],3),dtype=numpy.float32)
    hdr[:,:,0] = r
    hdr[:,:,1] = g
    hdr[:,:,2] = b
    return hdr

def writehdr(hdrpath,hdr):
    imageio.imwrite(hdrpath,hdr,format='hdr')




files = glob.glob('/home/jie/PycharmProjects/CNNTM/data/Fairchild/*.exr')
savepath = '/home/jie/PycharmProjects/CNNTM/data/Fairchild/HDR_format'
for file in files:
    hdr = ext2hdr(file)
    filename,file_ext = os.path.splitext(file)
    filename = os.path.basename(filename)
    filename = filename + '.hdr'
    curpath = os.path.join(savepath,filename)
    writehdr(curpath,hdr)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,964评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,099评论 19 139
  • 前几天看我文章的一位朋友问我这样的一个问题:珊珊老师,我最近有一个困惑,我在公司已经做了三年的销售了,每年的销售都...
    穆珊珊阅读 264评论 0 5
  • 元旦以它喜气洋洋的气氛掩人耳目,节日后阴云开始密布,都市白领奋笔疾书痛写总结的年度大剧如期上演…… 铺垫了这么多我...
    小确幸日日递阅读 241评论 0 0
  • 1 我一辈子都不会忘记他。虽然我没有一张他的照片,但他的样子一直印在我的脑子里。他脸上深坑的皱纹,他笑起来露出的大...
    锄风少年阅读 583评论 0 5