Распознавание образов в Python. Часть VI — функция обработки изображений

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

Теперь давайте создадим функцию, которая будет принимать изображение и обрабатывать его описанным ранее способом. А именно, возьмем среднее значение цвета в качестве порогового и затем переведем каждый пиксель в белый либо черный цвет в зависимости от того, больше он порогового значения или меньше.

Для начала удалим все, кроме импорта библиотек:

from PIL import Image
import numpy as np

import matplotlib.pyplot as plt
import time 

Теперь определим пороговую функцию:

def threshold(imageArray):
    balanceAr = []
    newAr = imageArray 

Итак, мы задали функцию и определили, что она имеет один входящий параметр под названием imageArray. Это будет массив со значениями пикселей изображения.

Далее, мы задали переменную balanceAr, инициализировав ее пустым списком. А затем создали переменную newAr и сохранили в нее входящий параметр. balanceAr будет затем усреднен для нахождения порогового значения.

Теперь создадим цикл for:

from statistics import mean

for eachRow in imageArray:
     for eachPix in eachRow:
         avgNum = mean(eachPix[:3])
         balanceAr.append(avgNum) 

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

i = Image.open('images/numbers/0.1.png')
iar = np.array(i)
i2 = Image.open('images/numbers/y0.4.png')
iar2 = np.array(i2)
i3 = Image.open('images/numbers/y0.5.png')
iar3 = np.array(i3)
i4 = Image.open('images/sentdex.png')
iar4 = np.array(i4)


fig = plt.figure()
ax1 = plt.subplot2grid((8,6),(0,0), rowspan=4, colspan=3)
ax2 = plt.subplot2grid((8,6),(4,0), rowspan=4, colspan=3)
ax3 = plt.subplot2grid((8,6),(0,3), rowspan=4, colspan=3)
ax4 = plt.subplot2grid((8,6),(4,3), rowspan=4, colspan=3)

ax1.imshow(iar)
ax2.imshow(iar2)
ax3.imshow(iar3)
ax4.imshow(iar4)


plt.show()

Запустив этот код, мы увидим:

Теперь нам нужно обработать эти изображения таким образом, чтобы везде был виден ноль, а цветов было только два: черный и белый.

Продолжение серии — Распознавание образов в Python. Часть VII – логика обработки изображения.