Numpy 使用python打开.raw图像数据

Numpy 使用python打开.raw图像数据,numpy,python-imaging-library,Numpy,Python Imaging Library,我一直在谷歌搜索使用python库显示原始图像数据的方法,但找不到任何合适的解决方案。数据取自摄像头模块,扩展名为“.raw”。另外,当我试图通过“more filename.raw”在终端中打开它时,控制台说这是一个二进制文件。供应商告诉我,相机输出16位原始灰度数据 但我想知道如何通过PIL、枕头或Numpy显示这些数据。我已经测试了PIL的图像模块。但是,它无法识别图像数据文件。看来PIL不把.RAW文件看作图像数据格式。可以显示BMP文件,但此“.raw”无法显示 另外,当我尝试使用ju

我一直在谷歌搜索使用python库显示原始图像数据的方法,但找不到任何合适的解决方案。数据取自摄像头模块,扩展名为“.raw”。另外,当我试图通过“more filename.raw”在终端中打开它时,控制台说这是一个二进制文件。供应商告诉我,相机输出16位原始灰度数据

但我想知道如何通过PIL、枕头或Numpy显示这些数据。我已经测试了PIL的图像模块。但是,它无法识别图像数据文件。看来PIL不把.RAW文件看作图像数据格式。可以显示BMP文件,但此“.raw”无法显示

另外,当我尝试使用justread函数和matplotlib时,如下所示

from matplotlib import pyplot as plt
f = open("filename.raw", "rb").read() 
plt.imshow(f) 
plt.show()
然后,出现了一个错误

错误:图像数据无法转换为浮点

任何想法都将不胜感激

链接:

我用以下代码做了一些改进。但现在的问题是,这段代码只显示整个图像的一部分

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()
看看:

rgb
只是一个rgb numpy数组,因此您可以使用任何库(不仅仅是
imageio
)将其保存到磁盘

如果要访问未处理的拜耳数据,请执行以下操作:

bayer = raw.raw_image

另请参见。

RAW不是位图或jpeg意义上的图像格式。这些图像包含每像素颜色,例如rgb值。RAW基本上包括照片船的原始数据,尚未转换为颜色值(因此为16位灰度)。这就是为什么(半)专业摄影师经常使用它来改变后处理中显示颜色的方式。由于尚未完成将数据转换为每像素颜色的步骤,所有标准图片库很可能无法读取原始数据格式。您是否搜索过numpy和RAW?我记得关于RAW有一个特定于品牌的标题栏。你可能想看看。我从未使用过它,因此无法评论它对您的有用性,但看起来它可能会有所帮助。这里还存在一个程序(和库),可以读取和转换来自多个相机模型的原始图像,请参阅,谢谢您提供的所有答案。但我想了解如何通过python手动打开和操作原始图像。我应该删除“fromstringio…”行。我现在不用它。
bayer = raw.raw_image