我通过一个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
答案 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):