Python читает двоичный файл беззнаковых 16-битных целых - PullRequest
0 голосов
/ 16 июня 2019

Я должен прочитать двоичный файл в Python и сохранить его содержимое в массиве.У меня есть информация об этом файле:

filename.bin is of size 560x576 (height x width) with 16 b/p, i.e., unsigned 16-bit integer for each pixel

Это то, что я смог придумать до сих пор:

import struct
import numpy as np
fileName = "filename.bin"

with open(fileName, mode='rb') as file: 
    fileContent = file.read()



a = struct.unpack("I" * ((len(fileContent)) // 4), fileContent)

a = np.reshape(a, (560,576))

Однако я получаю ошибку

cannot reshape array of size 161280 into shape (560,576)

161280 - это ровно половина 560 x 576 = 322560.Я хотел бы понять, что я делаю неправильно и как читать двоичный файл и изменять его в требуемую форму.

1 Ответ

1 голос
/ 16 июня 2019

Вы используете 'I' для формата, который является 32-битным без знака, вместо 'H', который является 16-битным без знака.

Сделай это

a = struct.unpack("H" * ((len(fileContent)) // 2), fileContent)
...