是否有Pythonic解決方案來讀取和處理RAW圖像。即使它只是訪問一個原始的照片文件(例如,cr2或dng),然後將其輸出爲JPEG格式。Python中的RAW圖像處理
理想情況下,一個用於python的dcraw綁定,但其他任何可以完成的東西也是足夠的。
是否有Pythonic解決方案來讀取和處理RAW圖像。即使它只是訪問一個原始的照片文件(例如,cr2或dng),然後將其輸出爲JPEG格式。Python中的RAW圖像處理
理想情況下,一個用於python的dcraw綁定,但其他任何可以完成的東西也是足夠的。
我不確定Python Imaging Imaging Library(PIL http://www.pythonware.com/products/pil/)中的RAW支持有多廣泛,但您可能想檢查一下。
否則,你可以直接調用dcraw,因爲它已經很好地解決了這個問題。
嘗試http://libopenraw.freedesktop.org/wiki/GettingTheCode
混帳回購協議: 的git://anongit.freedesktop.org/git/libopenraw.git
有一個在源代碼樹蟒目錄。 ;-)
ImageMagick支持most RAW formats並提供Python bindings。
至於Python的dcraw綁定:dcraw是用C編寫的,所以你可以通過ctypes
module來訪問它。
我發現這個:https://gitorious.org/dcraw-thumbnailer/mainline/blobs/master/dcraw-thumbnailer
它要求Dcraw執行從蟒蛇的過程,並將其轉換爲PIL對象。
我寫了一個純python庫,最近名爲rawphoto
用於處理python中的原始圖像。目前它只支持佳能CR2文件(我很快就會加入尼康格式)。它也在PyPi。如果您訪問CR2文件,可能對您有所幫助。提取JPEG預覽圖像的
實施例:
from rawphoto.raw import Raw
# The API here will probably change before the 1.0 release.
blob = Raw(filename="somefile.CR2").fhandle.get_quarter_size_rgb()
# Do something with the JPEG here... eg. save it:
with open("output.jpeg", 'wb' as f:
f.write(blob)
EDIT:
from rawphoto.cr2 import Cr2
blob = Cr2(filename="somefile.CR2").get_quarter_size_rgb()
# Do something with the JPEG here... eg. save it:
with open("output.jpeg", 'wb' as f:
f.write(blob)
,或者使用通用Raw
類如添加更多,這將包裝任何類型的原始文件的:這已被替換爲rawkit,基於ctypes的libraw綁定。 RawKit將會更好地工作,您應該使用它(rawphoto現在將被棄用,並被用作教育工具)。
前一段時間我寫了一個名爲rawpy的libraw/dcraw包裝器。這是很容易使用:
import rawpy
import imageio
raw = rawpy.imread('image.nef')
rgb = raw.postprocess()
imageio.imsave('default.tiff', rgb)
它與numpy的陣列原生支持,並支持大量的選項,包括直接訪問未經處理的拜爾數據。
下面是佳能CR2圖像轉換爲友好的格式與rawkit的方式,與目前的執行工作:
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構造函數來實現相同。
您正在保存jpeg格式的文件與PNG擴展。 – 2017-08-01 08:56:41
謝謝,修正了錯字。 – 2017-08-02 13:02:06
PIL不做RAW(至少不是CR2或DCR)。 – Seth 2010-10-02 03:58:39