我将 BGRA 图像转储为以下格式(连续)的二进制文件:[(b, g, r, a), (b, g, r, a), (b, g, r, a ) ...] 我知道图像的宽度、高度和 channel 数量(在这种情况下当然是 4 个)。
我想将图像读入一个 4D 数组,其中第一个维度表示 B 值等。 我有以下代码:
data = np.fromfile(fbin, np.dtype('B'))
print data
这会打印出如下内容:
[ 79 90 92 0 80 91 93 0 84 96 98 0 ...]
其中 79 是 B,90 是 G,92 是 R,0 是 A,依此类推。现在我尝试像这样 reshape “数据”:
print data.reshape(channels, height, width)
得到以下内容:
[[[ 79 90 92 0 ...] .. [] ..]
[[109 ...] .. [] ..]
[[118 ...] .. [] ..]
[[ 0 ...] .. [] ..]]
我想得到的是这样的东西:
[[[ 79 ...] .. [] ..]
[[90 ...] .. [] ..]
[[92...] .. [] ..]
[[0...] .. [] ..]]
最佳答案
好吧,这感觉太简单了,解决方案是:
data = data.reshape(channels, width, height, order='F')
关于python - 使用 NumPy 将二进制数据读取为 BGRA 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28278075/