为什么 >= 评估不起作用 Python
Why >= evaluation does not work Python
">=" 好像不行。当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 行,收缩
结果[i,j] = img[固定x,固定]
IndexError:索引 100 超出了大小为 100 的轴 1 的范围
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 像素(实际上这正是你所说的:len(img) = 125, len(img[0]) = 100
),而不是 100x125.
为了证实这一点,我通过用 125x100 零的普通数组替换图像来尝试你的程序,它显示了与你的相同的错误消息。然后我用 100x125 的数组试了一下,成功了。
">=" 好像不行。当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 行,收缩
结果[i,j] = img[固定x,固定]
IndexError:索引 100 超出了大小为 100 的轴 1 的范围
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 像素(实际上这正是你所说的:len(img) = 125, len(img[0]) = 100
),而不是 100x125.
为了证实这一点,我通过用 125x100 零的普通数组替换图像来尝试你的程序,它显示了与你的相同的错误消息。然后我用 100x125 的数组试了一下,成功了。