2015-02-02 2 views
2

У меня есть изображение BGRA, сбрасываемое в двоичный файл в следующем формате (серийно): [(b, g, r, a), (b, g, r, a), (b, g, r, a) ...] Я знаю ширину изображения, высоту & # каналов (4, конечно, в этом случае).Чтение двоичных данных как изображение BGRA с NumPy

Я хочу, чтобы прочитать изображение в 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...] .. [] ..]] 

ответ

3

Ну , это кажется почти слишком простым, решение:

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