我想使用Python中的rawpy,imageio和opencv库将'.NEF'转换为'.png'。我已经尝试过在rawpy中使用各种标志来生成与我刚打开NEF时看到的图像相同的图像,但是输出的所有图像都非常暗。我在做什么错了?
我当前的代码版本是:
import rawpy
import imageio
from os.path import *
import os
import cv2
def nef2png(inputNEFPath):
parent, filename = split(inputNEFPath)
name, _ = splitext(filename)
pngName = str(name+'.png')
tempFileName = str('temp%s.tiff' % (name))
with rawpy.imread(inputNEFPath) as raw:
rgb = raw.postprocess(gamma=(2.222, 4.5),
no_auto_bright=True,
output_bps=16)
imageio.imsave(join(parent, tempFileName), rgb)
image = cv2.imread(join(parent, tempFileName), cv2.IMREAD_UNCHANGED)
cv2.imwrite(join(parent, pngName), image)
os.remove(join(parent, tempFileName))
我希望得到以下结果: https://imgur.com/Q8qWfwN
但是我一直在得到这样的黑暗输出: https://imgur.com/0jIuqpQ
对于NEF的实际文件,如果您想弄乱它,我将它们上传到了我的Google驱动器:https://drive.google.com/drive/folders/1DVSPXk2Mbj8jpAU2EeZfK8d2HZM9taiH?usp=sharing
答案 0 :(得分:1)
您没做错什么,只是缩略图是由尼康专有的相机内图像处理管线生成的。很难通过一套完全不同的算法从开源工具获得完全相同的视觉输出。
可以通过设置no_auto_bright=False
使图像更亮。如果您对默认的增亮不满意,可以使用auto_bright_thr
参数(请参阅documentation)。