"> =" кажется, не работает. Когда fixedx = 100 и len (img [0]) равно 100, код не выполняет оператор печати и не меняет значение fixedx на 99Почему> = оценка не работает Python
Обе переменные являются целыми числами. Есть ли другой способ сделать сравнение в python?
single_sm.jpg - это файл 100x125 jpg. Таким образом, длина (IMG) = 125, Len (IMG [0]) = 100.
Запуск сценария ниже продуктов:
Traceback (самый последний вызов последнего):
Файл "shrink.py" , строка 69, в
changed_img = термоусадочные (пикс, 0, 81, 25, 20, downsp)
Файл "shrink.py", строки 37, в термоусадочный
результат [I, J ] = img [fixedx, fixedy]
IndexError: индекс 100 находится вне границ для оси 1 с размером 100
from PIL import Image
import numpy as np
import math
def shrink(img, x, y, size, scale, downsp):
result = np.zeros((scale, scale, 3), dtype=np.uint8)
scale_factor = math.floor(size/scale)
for i in xrange(scale):
for j in xrange(scale):
fixedx = int(i*scale_factor+x)
fixedy = int(j*scale_factor+y)
if fixedx >= (len(img[0]) - 1):
print "in this step"
fixedx = len(img[0]) - 1
if fixedy >= (len(img) - 1):
fixedy = len(img) - 1
result[i,j] = img[fixedx, fixedy]
return result
if __name__ == '__main__':
img = Image.open("imgs/single_sm.jpg")
pix = np.array(img)
downsp = True
changed_img = shrink(pix, 0, 81, 25, 20, downsp)
changed_img = np.array(changed_img)
resized = Image.fromarray(changed_img, 'RGB')
resized.save('downsp.jpg')
Этот сниппет должен работать нормально. Нам нужно посмотреть, что такое img [0] и какое фиксированное x назначено. – t3dodson
Невозможно воспроизвести. Проблема в другом месте. – Sinkingpoint
Можете ли вы выполнить 'print x, type (fixedx)' и 'print len (img [0])' перед операциями 'if'? – vk1011