gpt4 book ai didi

python - 从原始二进制图像数据到 Python 中的 PNG

转载 作者:太空宇宙 更新时间:2023-11-04 03:05:11 24 4
gpt4 key购买 nike

搜索了几个小时后,我找到了 this关联。下面是一些背景信息。

我正在通过硬件调试器捕获正在运行的嵌入式设备的实时帧。捕获的帧存储为 raw binary file s,没有标题或格式。在查看了上面的链接并理解了 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 channel (以及 Alpha),我将能够重新创建准确的图像。示例代码会有很大帮助。

最佳答案

一张 RGBA 图像有 4 个 channel ,一个用于每种颜色,一个用于 alpha 值。二进制文件似乎只有一个 channel ,因为您在执行 data.reshape(shape) 操作时不会报告错误(对应的 RGBA 图像的形状为 (430, 430, 4)).我看到两个潜在的原因:

  1. 实际图像确实有颜色信息,但当您抓取数据时,您只是抓取了四个 channel 之一。

  2. 图像实际上是灰度图像,但嵌入式设备显示的是伪彩色图像,造成颜色信息的错觉。在不知道正在使用什么颜色映射的情况下,很难为您提供帮助,除了将您指向 matplotlib.pyplot.colormaps(),它列出了 matplotlib 中所有已经可用的颜色映射。

可以吗

a) 解释成像模式的确切来源/类型,以及

b) 显示嵌入式设备输出的照片?

PS:另外,至少在我手中,粘贴的二进制文件的大小似乎为 122629,这与图像形状 (430,430) 不一致。

关于python - 从原始二进制图像数据到 Python 中的 PNG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39691936/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com