是否有任何Pythonic解决方案来读取和处理RAW图像。即使它只是访问原始照片文件(例如cr2或dng),然后将其输出为jpeg。
理想情况下是python的dcraw绑定,但是其他任何可以完成它的东西也足够了。
答案 0 :(得分:13)
前段时间我写了一个名为rawpy的libraw / dcraw包装器。它很容易使用:
import rawpy
import imageio
raw = rawpy.imread('image.nef')
rgb = raw.postprocess()
imageio.imsave('default.tiff', rgb)
它与numpy数组本身一起工作,并支持许多选项,包括直接访问未处理的Bayer数据。
答案 1 :(得分:5)
ImageMagick支持most RAW formats并提供Python bindings。
对于Python的dcraw绑定:dcraw是用C语言编写的,因此您可以通过ctypes
module访问它。
答案 2 :(得分:5)
以下是使用rawkit将佳能CR2图像转换为友好格式的方法,该方法适用于当前的实现:
import numpy as np
from PIL import Image
from rawkit.raw import Raw
filename = '/path/to/your/image.cr2'
raw_image = Raw(filename)
buffered_image = np.array(raw_image.to_buffer())
image = Image.frombytes('RGB', (raw_image.metadata.width, raw_image.metadata.height), buffered_image)
image.save('/path/to/your/new/image.png', format='png')
使用numpy数组在这里不是很优雅,但至少它有效,我无法想象如何使用PIL构造函数来实现相同的目标。
答案 3 :(得分:1)
尝试http://libopenraw.freedesktop.org/wiki/GettingTheCode
Git回购: GIT中://anongit.freedesktop.org/git/libopenraw.git
源树中有一个python目录。 ; - )
答案 4 :(得分:0)
我不确定Python成像库(PIL http://www.pythonware.com/products/pil/)中的RAW支持有多广泛,但您可能想要检查它。
否则,您可以直接调用dcraw,因为它已经很好地解决了这个问题。
答案 5 :(得分:0)
我发现了这个:https://gitorious.org/dcraw-thumbnailer/mainline/blobs/master/dcraw-thumbnailer
它将dcraw称为python中的进程,并将其转换为PIL对象。