0
我运行一个300像素的矩阵(使用Pillow),for循环用于x和y。最后我设置了变量:lastPixelAvg = PixelAvg,所以我可以将它与新值进行比较。python 2.7 for循环中的整型变量变化
当下一次迭代开始时,该值意外地发生了变化。我尝试了各种各样的东西,比如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
你怎么知道的值不匹配?在这里发布的代码中,您没有在lastPixelAvg被设置的位置记录该值。你能否更详细地向我们展示是什么让你觉得事情正在发生改变? –
或在pdb中进行检查以检查 – cmh
我通过在图像中着色像素来可视化输出。我注意到第二个像素(x = 110,y = 200)几乎总是将brigtnessShift状态设置为true。我尝试在代码中的各种位置打印变量,很明显,在for命令之后的第一条指令处,值已经改变。这不是完整的代码,但在这一点之后都没有使用任何值(pixelAvg&lastPixelAvg) – Floris