为什么 >= 评估不起作用 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 的数组试了一下,成功了。