2017-02-14 5 views
0

Я почти уверен, что совершил глупую ошибку, но я не могу найти ее довольно долгое время.Почему здесь не работает декремент?

Я (успешно) загружаю некоторые изображения, преобразую их в оттенки серого и повышаю до b & w. Затем я хотел создать метод, который оценивает каждую строку пикселей, измеряя его значение цвета avg (0 ... 255) и давая мне номер строки первого, который ниже определенного порогового значения. Он работает, но расширение метода делать то же самое со дна не делает. Вот как это выглядит:

t_thresh_hor = 210.0 

def core_text_loc(image): 
    height, width = image.shape 
    height = height - 1 # to adjust for starting with 0 
    width = width - 1  # to adjust for starting with 0 
    top_trim = 0 
    bot_trim = height 

    i = 0 
    while i < height and top_trim == 0: 
     row = image[i, 0:-1] 
     i = i + 1 
     if numpy.mean(row) < t_thresh_hor: 
      top_trim = i 
    # here it stops working 
    i = height 
    while i > 0 and bot_trim == height: 
     row = image[height, 0:-1] 
     if numpy.mean(row) < t_thresh_hor: 
      bot_trim = i 
     i = i - 1 

    return(top_trim, bot_trim) 

Я знаю, что порог является правильным (работает, когда я вручную получить доступ к конкретной линии), но bot_trim всегда возвращает высоту изображения, то есть он остановился на первой итерации (?). Что я сделал не так?

EDIT: Пример случай: Я проверяю его на две фотографии: первый из них является 4724x3177, а выход: top_trim: 1216 (правильный) bot_trim: 4723 (должно быть ≈ 4400) второй one4705 3177 top_trim: 315 (правильный) bot_trim: 4704 (должно быть ≈ 4400)

+1

Каков ожидаемый результат? Пожалуйста, укажите пример. –

ответ

3
row = image[height, 0:-1] 

вы всегда считывают из последней строки, а не i-й строке, как вы, вероятно, предполагалось. Попробуйте изменить height на i.

+0

Ах, глупая ошибка - работает сейчас. Благодаря! – MrVocabulary

3

Во втором цикле в то время как вы использовали

row = image[height, 0:-1] 

В то время как она должна быть

row = image[i, 0:-1] 
2

Изменить

row = image[height, 0:-1] 

в

row = image[i, 0:-1]