3

我有一个 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...] .. [] ..]]
4

1 回答 1

4

好吧,这感觉太容易了,解决方案是:

data = data.reshape(channels, width, height, order='F')
于 2015-02-02T14:45:44.933 回答