我一直在google搜索使用python庫顯示原始圖像數據的方法,但找不到任何合適的解決方案。數據來自相機模塊,並具有'.raw'擴展名。當我試圖通過'more filename.raw'在終端打開它時,控制檯說這是一個二進制文件。廠商告訴我,相機輸出16位原始灰度數據。使用python打開.raw圖像數據
但我想知道如何通過PIL,Pillow或Numpy顯示這些數據。我測試了PIL的Image模塊。但是,它無法識別圖像數據文件。看來PIL不會將.raw文件視爲圖像數據格式。可以顯示BMP文件,但是'.raw'不能。
此外,當我試圖與剛纔讀功能和matplotlib,如以下
from matplotlib import pyplot as plt
f = open("filename.raw", "rb").read()
plt.imshow(f)
plt.show()
然後用
ERROR: Image data can not convert to float
任何想法可以理解發生了錯誤。
鏈接: camera module
我做了一些改進與下面的代碼。但現在問題是這個代碼只顯示整個圖像的一部分。
from matplotlib import pyplot as plt
import numpy as np
from StringIO import StringIO
from PIL import *
scene_infile = open('G0_E3.raw','rb')
scene_image_array = np.fromfile(scene_infile,dtype=np.uint8,count=1280*720)
scene_image = Image.frombuffer("I",[1280,720],
scene_image_array.astype('I'),
'raw','I',0,1)
plt.imshow(scene_image)
plt.show()
RAW在位圖或jpeg的意義上不是圖像格式。這些圖像包含每個像素的顏色,例如rgb值。 RAW基本上包含了照片船的原始數據,尚未轉換爲顏色值(因此是16位灰度)。這就是爲什麼它經常被(半)專業攝影師用來改變顏色在後期處理中的顯示方式。由於將數據轉換爲每個像素的顏色的步驟尚未完成,因此所有標準圖片庫很可能無法讀取RAW數據格式。 – Dux
你是否搜索過numpy和RAW?我記得一些關於RAW的具有品牌特定標題塊的內容。 – hpaulj
你可能想看看[rawkit](https://github.com/photoshell/rawkit)。我從來沒有使用它,所以不能評論它對你的用處,但它看起來可能有幫助 – tom