Предыдущая статья – Распознавание образов в Python. Часть VI — функция обработки изображений.
Идем дальше и завершаем написание функции обработки изображений.
def threshold(imageArray): balanceAr = [] newAr = imageArray from statistics import mean for eachRow in imageArray: for eachPix in eachRow: avgNum = mean(eachPix[:3]) balanceAr.append(avgNum) balance = mean(balanceAr) for eachRow in newAr: for eachPix in eachRow: if mean(eachPix[:3]) > balance: eachPix[0] = 255 eachPix[1] = 255 eachPix[2] = 255 eachPix[3] = 255 else: eachPix[0] = 0 eachPix[1] = 0 eachPix[2] = 0 eachPix[3] = 255 return newAr
Сейчас мы тут добавили оценку каждого пикселя. Если пиксель ярче среднего, то он белый. Если он темнее среднего, то он черный.
Таким образом, мы можем передать в эту функцию массив изображения и в качестве результата получить массив черно-белого изображения.
Напомним, что наше первоначальное изображение имело следующий вид:
Теперь передадим его в нашу функцию:
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) iar = threshold(iar) iar2 = threshold(iar2) iar3 = threshold(iar3) iar4 = threshold(iar4) 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. Часть VIII – сохранение данных для обучения и тестирования.
Перевод статьи “Thresholding Logic”.
Пингбэк: Распознавание образов в Python. Часть VIII – сохранение данных для обучения и тестирования - pythonturbo