使用NumPy将二进制数据读取为BGRA图像

时间:2015-02-02 12:44:47

标签: python numpy image-formats

我将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...] .. [] ..]]

1 个答案:

答案 0 :(得分:4)

嗯,这感觉太简单了,解决方案是:

data = data.reshape(channels, width, height, order='F')