Я пытаюсь проанализировать изображение. Я в основном делаю, что в 2 этапа:Python конвертировать изображение в ч/б с определенными правилами
- преобразования его в оттенках серого изображения
- принимая участки на картинке и посмотреть, если они более вероятно, белый или черный
Моя программа работает очень хорошо в большинстве случаев, но не для всех. Это в основном потому, что я никогда не понимал, как преобразовать изображение в черно-белое. Я в основном копировал код, который я нашел, и заставил его работать с пробной версией и ошибкой (вот почему я закончил с серой шкалой, а не с ч/б, поскольку я не нашел, как сделать каждый не белый пиксель в оттенках серого черным)
Я использую PIL для своих операций с изображениями, и мои основные функции для работы с изображениями выглядят следующим образом (convert() используется один раз, и avgcol() используется для каждой части преобразованного изображения, я хочу проанализировать)
def convert():
global im
matrix = (1.412453, 0.357580, 0.180423, 0,
0.212671, 0.715160, 0.072169, 0,
0.019334, 0.119193, 0.950227, 0)
im = im.convert("L", matrix)
def avgcol(im):
p_colors=im.getcolors()
cnt_pix=(im.size[0])*(im.size[1])
avgpix=0
for i in range(len(p_colors)):
avgpix=avgpix+p_colors[i][0]*p_colors[i][1]
return round(avgpix/cnt_pix , 1)
Я действительно не знаю, что делает матрица (не нашел сайт, который объясняет одиночные значения). Моя конкретная проблема прямо сейчас заключается в том, что я бы хотел конвертировать пиксели со слишком большим количеством зеленых в белые пиксели, но я уверен, что если это будет решено, что-то еще выскочит, так что некоторые основные объяснения, что-то вроде этого сделано, было бы здорово. Но я благодарен за любой указатель в правильном направлении. И, пожалуйста, не нужно решение для циклизации каждого пикселя. Фотографии довольно большие, и программа должна быть быстрой.
Вы не знаете, как найти [документации] (http://www.pythonware.com/library/pil/handbook/image.htm)? – abarnert