搜索了几个小时后,我结束了this链接。以下是一些背景信息。从原始的二进制图像数据到Python中的PNG
我通过硬件调试器捕捉正在运行的嵌入式设备的活动帧。捕获的帧存储为raw binary file,没有标题或格式。在看过上面的链接和理解之后,尽管敷衍,NumPY和Matplotlib,我能够成功地将原始二进制数据转换为图像。这很重要,因为我不确定链接到原始二进制文件是否有助于任何人。
我用这个代码:
import matplotlib.pyplot as plt # study documentation
import numpy as np # " "
iFile = "FramebufferL0_0.bin" # Layer-A
shape = (430, 430) # length and width of the image
dtype = np.dtype('<u2') # unsigned 16 bit little-endian.
oFile = "FramebufferL0_0.png"
fid = open(iFile, 'rb')
data = np.fromfile(fid, dtype)
image = data.reshape(shape)
plt.imshow(image, cmap = "gray")
plt.savefig(oFile)
plt.show()
现在,我展示的图像是黑白的,因为彩图是灰度(是吗?)。实际捕获的帧不是黑色和白色。也就是说,我在嵌入式设备上看到的图像是“多彩”的。
我的问题是,我如何计算原始二进制文件中每个像素的实际颜色?有没有一种方法可以从原始二进制文件中获取图像的实际颜色映射?我看了一下this的例子,我确信,如果我能够计算R,G和B通道(以及Alpha),我将能够重新创建精确的图像。一个示例代码会有很大的帮助。
“图像确实有颜色信息,但是当您抓取数据时,您只能抓取四个通道中的一个。”是的,我想这似乎是问题所在。我怎样才能分别获取每个频道? 我粘贴了错误的二进制文件,正确的是:http://pastebin.com/FGEDRbjC 这与430 * 430(size == 184990)的图像形状一致, –