"> ="似乎不起作用。当fixedx = 100且len(img [0])为100时,代码不执行打印语句并将fixedx的值更改为99
两个变量都是整数。 有没有其他方法可以在python中进行比较?
single_sm.jpg是一个100x125的jpg文件。因此,len(img)= 125,len(img [0])= 100。
下面运行脚本会产生:
追踪(最近一次呼叫最后一次):
文件" shrink.py",第69行,
changed_img = shrink(pix,0,81,25,20,downsp)
文件" shrink.py",第37行,收缩
result [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')
答案 0 :(得分:1)
错误说:
IndexError: index 100 is out of bounds for axis 1 with size 100
由于轴1是数组的第二维(fixedy
,而不是fixedx
),这意味着数组的值与您期望的不同。所以结论是阵列有125x100像素(实际上这正是你所说的:len(img) = 125, len(img[0]) = 100
),而不是100x125。
为了确认这一点,我尝试用一个125x100零的普通数组代替图像,它显示的错误信息与你的相同。然后我用100x125阵列尝试了它,它运作了。