OpenCV Gamma校正exr

tgabmvqs  于 2022-11-15  发布在  其他
关注(0)|答案(1)|浏览(125)

我如何伽玛校正一个32位的.exr文件看起来像这个问题的图像所需的结果?基本上从线性转换到sRGB不知何故?我得到了这个代码(并修改了一点)从convert EXR to JPEG using ImageIO and Python
我不太理解这些值(65535),更改它们将导致奇怪的输出图像。

import os
os.environ['OPENCV_IO_ENABLE_OPENEXR']='True'

import numpy as np
import cv2
im=cv2.imread("D:\CG_CONTENT\HDRIS\HDRI_BROWSER\Concrete_Office_Outside_sm.exr",-1)
im=im*65535
im[im>65535]=65535
im=np.uint16(im)
cv2.imwrite("D:\CG_CONTENT\HDRIS\HDRI_BROWSER\Concrete_Office_Outside_sm_test8.png",im)

在这个图像的左边我有代码的输出,但我需要像右边的图像一样的东西。

qyzbxkaa

qyzbxkaa1#

因此,为了将线性图像正确转换为sRGB,我必须使用传递函数,对于sRGB,可以使用gamma进行简化。
这是我最终使用的,效果非常好。

#Read image (.exr)
    im=cv2.imread(newPath,-1)
    
    #Remove alpha if present
    im = im[:,:,:3]    
    
    #resize image
    dsize = (400,200)
    ldrDrago = cv2.resize(im, dsize)    
        
    #Convert to sRGB
    ldrDrago = ldrDrago ** (1 / 2.2)
    
    
    #Write jpeg
    cv2.imwrite(filename+".jpg", ldrDrago * 255)

相关问题