我将BGRA图像转换为以下格式的二进制文件(连续):[(b,g,r,a),(b,g,r,a),(b,g,r,a )...] 我知道图像的宽度,高度和宽度。频道数量(当然在这种情况下为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,依此类推。现在我尝试像这样重塑'数据':
print data.reshape(channels, height, width)
得到以下信息:
[[[ 79 90 92 0 ...] .. [] ..]
[[109 ...] .. [] ..]
[[118 ...] .. [] ..]
[[ 0 ...] .. [] ..]]
我希望得到的是这样的:
[[[ 79 ...] .. [] ..]
[[90 ...] .. [] ..]
[[92...] .. [] ..]
[[0...] .. [] ..]]
答案 0 :(得分:4)
嗯,这感觉太简单了,解决方案是:
data = data.reshape(channels, width, height, order='F')