Форум сайта python.su
0
Доброго времени суток.
Нужно посчитать количество чёрных пикселей в строке. Делаю так:
im1 = Image.open("2.png") def bw_filter(threshold=127): def table_gen(x): return 0 if x < threshold else 255 return table_gen new = im1.convert("L").point(bw_filter(200)).convert("1") shir = new.size[0] vys = new.size[1] pix = new.load() str_mas = [] for y in range(vys): sum_str = 0 for x in range(shir): sum_str += pix[x,y]/255 str_mas.append(shir - sum_str)
pix[:,y]
Отредактировано nikk (Янв. 19, 2014 21:05:41)
Офлайн
0
Это не извратный массив. pix - объект, переопределяющий магический метод __getitem__, принимающий на вход кортеж из двух чисел. Так что срез не получить. Можете попровать так:
sums = [sum(pix[x,y] / 255 for x in xrange(shir)) for y in xrange(vys)]
Отредактировано skavans (Янв. 23, 2014 15:49:10)
Офлайн
0
Сделал в результате через scipy, там буквально две строчки получилось. Позже выложу код, сейчас с телефона.
Ещё бы найти, как с помощью scipy конвертировать из оттенков серого в чёрно-белое и от Pillow можно отказаться совсем. Может кто подскажет?
Офлайн
0
В общем, сам уже во всём разобрался. Построчная сумма по изображению считается так (для изображения в оттенках серого):
iz = misc.imread ( "3.png", True ) vys,shir = iz.shape str_mas = iz.sum(axis = 1) str_mas = str_mas/255 str_mas =shir - str_mas
new = numpy.where(iz < 200, 0, 1)
Офлайн