如何使用python从.NEF文件中获取RAW像素数据?

Rya*_*yan 7 python camera photo image python-imaging-library

我正在python中编写一些操作原始相机数据的脚本.目前我正在使用DCRAW将.nef(尼康RAW格式)文件中的信息转换为.tiff文件,然后在photoshop中将其转换为sRGB .png,以便我可以使用Pillow读取像素强度.

有没有办法在python中解析.nef文件本身,而不是跳过这么多的箍?

我不关心速度,这主要是一个学习和演示练习.

小智 8

您可以将另一个库与Pillow结合使用来完成此任务.例如,rawpy可以为你完成这项工作.

以下链接中的示例显示了如何读取.nef文件并将其转换为numpy arrays使用该postprocess()方法. https://pypi.python.org/pypi/rawpy/0.3.5

从那里你可以轻松地将图像保存为TIFF或者可以做类似的事情.

from PIL import Image
new_img = Image.fromarray(numpy_array)
Run Code Online (Sandbox Code Playgroud)

编辑:我使用rawpy和枕头编写了一个小脚本,它带有.nef图像,将其转换为numpy数组,从中创建一个新的枕头图像,并在屏幕上显示它(显然你可以读取强度而不是显示它屏幕上)

import rawpy
from PIL import Image
raw = rawpy.imread('trial.nef')
rgb = raw.postprocess()
img = Image.fromarray(rgb) # Pillow image
img.show() # show on screen
Run Code Online (Sandbox Code Playgroud)