RAW 画像を読み取って処理するための Pythonic ソリューションはありますか。生の写真ファイル(cr2やdngなど)にアクセスしてjpegとして出力するだけの場合でも。
理想的には Python の dcraw バインディングですが、これを達成できる他のものでも十分です。
ImageMagickは、ほとんどの RAW 形式をサポートし、 Python バインディングを提供し。
ctypes
Python の dcraw バインディングについて: dcraw は C で記述されているため、 moduleからアクセスできます。
現在の実装で動作するrawkitを使用して、canon 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コンストラクターを使用して同じことを達成する方法を理解できませんでした.
http://libopenraw.freedesktop.org/wiki/GettingTheCode を試してください
Git リポジトリ: git://anongit.freedesktop.org/git/libopenraw.git
ソースツリーに python ディレクトリがあります。;-)
私はこれを見つけました:https://gitorious.org/dcraw-thumbnailer/mainline/blobs/master/dcraw-thumbnailer
Python からプロセスとして dcraw を呼び出し、PIL オブジェクトに変換します。
Python Imaging Library (PIL http://www.pythonware.com/products/pil/ ) での RAW サポートがどれほど広範囲に及ぶかはわかりませんが、チェックしてみてください。
それ以外の場合は、すでにこの問題をうまく解決しているため、dcraw を直接呼び出すことができます。