为什么>=计算在Python中不起作用
>似乎不起作用。当fixedx=100且lenimg[0]为100时,代码不执行打印语句并将fixedx的值更改为99 这两个变量都是整数。 在python中还有其他方法进行比较吗 single_sm.jpg是一个100x125 jpg文件。因此,lenimg=125,lenimg[0]=100 运行下面的脚本生成: 回溯最近一次呼叫上次: 文件shrink.py,第69行,in 更改的\u img=收缩pix,0,81,25,20,向下 文件shrink.py,第37行,在shrink中 结果[i,j]=img[fixedx,fixedy] 索引器:索引100超出大小为100的轴1的界限为什么>=计算在Python中不起作用,python,evaluation,comparison-operators,Python,Evaluation,Comparison Operators,>似乎不起作用。当fixedx=100且lenimg[0]为100时,代码不执行打印语句并将fixedx的值更改为99 这两个变量都是整数。 在python中还有其他方法进行比较吗 single_sm.jpg是一个100x125 jpg文件。因此,lenimg=125,lenimg[0]=100 运行下面的脚本生成: 回溯最近一次呼叫上次: 文件shrink.py,第69行,in 更改的\u img=收缩pix,0,81,25,20,向下 文件shrink.py,第37行,在shrink中 结果
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')
错误显示:
IndexError: index 100 is out of bounds for axis 1 with size 100
由于轴1是数组fixedy的第二维度,而不是fixedx,这意味着数组的值与预期值不同。所以结论是阵列有125x100像素,实际上这正是你说的:lenimg=125,lenimg[0]=100,而不是100x125
为了证实这一点,我尝试了你的程序,用125x100个零的普通数组替换图像,它显示了与你相同的错误消息。然后我用一个100x125数组进行了尝试,结果成功了。这段代码应该可以正常工作。我们需要查看img[0]是什么以及分配了什么fixedx。无法复制。问题在别处。你能在if语句之前执行print x、typefixedx和print lenimg[0]吗?@vk1011我执行了,都显示100,然后索引越界错误