Распознавание образов в Python. Часть II — изучение массивов пикселей

Предыдущая статья — Распознавание образов в Python. Часть I — введение.

Теперь мы полностью готовы погрузиться в вопрос численного представления изображения. Для этого мы будем использовать библиотеку PIL или Pillow (в зависимости от того, какая у нас стоит версия Python, 32-х или 64-битная).

# if you are on 32 bit os
# import Image

# 64 bit with pillow:
from PIL import Image
import numpy as np 

В зависимости от битности вашей версии Python импортируйте библиотеку PIL или Pillow. Мы используем PIL, так как у нас 64-битная версия Python. Для операций с числами мы также подгружаем библиотеку NumPy.

Теперь давайте помотрим, как наше изображение выглядит в виде чисел:

i = Image.open('images/dot.png')
iar = np.asarray(i)
print(iar) 

Сначала мы открыли наш файл с изображением, затем преобразовали в массив NumPy и сохранили его в переменную iar. После этого мы вывели результат на экран.

Результат, с неочищенными данными, должен выглядеть примерно так:

[[[  0   0   0 255]
  [255 255 255 255]
  [255 255 255 255]
  [255 255 255 255]
  [255 255 255 255]
  [255 255 255 255]
  [255 255 255 255]
  [255 255 255 255]]

...

 [[255 255 255 255]
  [255 255 255 255]
  [255 255 255 255]
  [255 255 255 255]
  [255 255 255 255]
  [255 255 255 255]
  [255 255 255 255]
  [255 255 255 255]]]

Это трехмерный массив данных. Эти данные представляют собой изображение, а каждый матричный блок — это ряд данных, где каждый элемент является пикселем в формате RGB-A (Red, Green, Blue, Alpha). Картинка ниже поможет разобраться в этом вопросе:

Следующая статья — Распознавание образов в Python. Часть III — еще про массивы пикселей.