python — интерпретировать байтовый массив изображения

Что хранится в байтовом массиве изображения?
Я работал над проектом, в котором нужно было интерпретировать то, что хранится в байтовом массиве изображения.
Как мы интерпретируем элементы байтового массива?

Замечания:
Ниже приведен код в Python для генерации байтового массива.

from array import array
f = open("temp.jpg", "rb")
bytes = bytearray(f.read())

0

Решение

Вы отметили это с помощью python-imaging-library, но нигде не упоминаете об этом в своем вопросе и не используете его.

Я сильно подозреваю, что вы на самом деле хочу использовать это. Вас не интересует массив байтов, составляющих заголовок JFIF, сжатые данные изображения, сегмент EXIF ​​и т. Д .; Вы хотите массив значения пикселей.

Итак, сначала вы должны установить библиотеку изображений Python. Современная версия называется подушка, и документы имеют полностью инструкции по установке, но часто это просто pip install pillow,

И теперь вы можете использовать его в своем скрипте:

>>> from PIL import Image
>>> img = Image.open("temp.jpg")
>>> img.mode
'RGB'
>>> img.getpixel((0, 0))
(3, 148, 231)

Image Объект уже похож на массив. mode позвольте мне знать, что это 8-битное RGB-изображение, поэтому каждый пиксель будет иметь 3 значения — интенсивность красного, зеленого и синего от 0 до 255. И getpixel((0, 0)) возвращает мне красные, зеленые и синие значения для верхнего левого пикселя.

Если вы действительно хотите плоский массив, вы можете пойти и это:

>>> img.getdata()[0]
(3, 148, 231)

Или, если вам нужен плоский массив байтов (чередующийся красный-синий-зеленый-красный-синий-зеленый) вместо кортежей:

>>> img.getbytes()[0]
3
0

Другие решения


По вопросам рекламы [email protected]