Предыдущая статья — Распознавание образов в 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 – логика обработки изображения.