python 2.7 for循环中的整数变量更改

时间:2016-05-11 16:18:00

标签: python python-2.7 for-loop int

我通过一个300像素的矩阵(使用Pillow)和x和y的for循环。最后我设置了变量:lastPixelAvg = PixelAvg,所以我可以将它与新值进行比较。

当下一次迭代开始时,该值意外地发生了变化。我已经尝试了各种各样的东西,比如copy.deepcopy(),因为这可能与处理-5到255之间的整数的方式有关。在开始时而不是在结尾处分配变量也没有帮助。我究竟做错了什么?

brightnessShift=False
deviation=3
lastPixelAvg=0
for x in xrange(100,400,10):
    for y in xrange(200,300,10):
        xy = (x, y)
        rgb = img.getpixel(xy)

        pctR=int(rgb[0]*0.391)      
        pctG=int((rgb[1]-5)*0.391)  
        pctB=int(rgb[2]*0.391)

        pixelAvg=(pctR+pctG+pctB)/3
        if not (x==100):
            print lastPixelAvg # <--- this returns a different value then set at the end, always about 10 higher; for instance 42
            brightnessShift = ((pixelAvg+deviation*2.5)<=lastPixelAvg) or ((pixelAvg-deviation*2.5)>=lastPixelAvg) #!!deviation * 2.5
        else:
            brightnessShift = False

        lastPixelAvg=pixelAvg # here the value is set to, for instance 30, from pixelAvg
        print lastPixelAvg # returns 30

1 个答案:

答案 0 :(得分:0)

感谢pdb提示。我有错误的for循环。

for x in xrange(100,400,10):
    for y in xrange(200,300,10):

应该是:

for y in xrange(200,300,10):
    for x in xrange(100,400,10):

if not (y==200):代替if not (x==100):