48

是否有任何 Pythonic 解决方案来读取和处理 RAW 图像。即使它只是访问原始照片文件(例如 cr2 或 dng)然后将其输出为 jpeg。

理想情况下,python 的 dcraw 绑定,但任何其他可以完成的事情也足够了。

4

6 回答 6

23

不久前,我写了一个名为rawpy的 libraw/dcraw 包装器。它很容易使用:

import rawpy
import imageio

raw = rawpy.imread('image.nef')
rgb = raw.postprocess()
imageio.imsave('default.tiff', rgb)

它与 numpy 数组一起工作,并支持许多选项,包括直接访问未处理的拜耳数据。

于 2015-11-10T21:05:09.307 回答
7

ImageMagick supports most RAW formats and provides Python bindings.

As for dcraw bindings for Python: dcraw is written in C, so you can access it through ctypes module.

于 2011-06-03T11:30:22.700 回答
4

这是一种使用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 构造函数来实现相同的效果。

于 2016-11-20T17:19:22.063 回答
1

试试http://libopenraw.freedesktop.org/wiki/GettingTheCode

Git 仓库:git://anongit.freedesktop.org/git/libopenraw.git

源代码树中有一个 python 目录。;-)

于 2011-06-03T11:25:36.970 回答
0

我不确定 Python Imaging Library (PIL http://www.pythonware.com/products/pil/ ) 中的 RAW 支持有多广泛,但您可能想检查一下。

否则,您可以直接调用 dcraw,因为它已经很好地解决了这个问题。

于 2010-03-11T14:00:52.393 回答
0

我发现了这个:https ://gitorious.org/dcraw-thumbnailer/mainline/blobs/master/dcraw-thumbnailer

它将 dcraw 作为来自 python 的进程调用并将其转换为 PIL 对象。

于 2013-05-30T17:27:05.140 回答