[英]Init object error TypeError: 'int' object has no attribute '__getitem__'
我正在尝试使用以下代码进行一些图像处理:
Image.open('C:\\temp\\img')
width, height = im.size
im = im.resize((width*8,height*8), Image.BICUBIC)
pixdata = im.load()
for y in xrange(im.size[1]):
for x in xrange(im.size[0]):
if pixdata[x, y][0] < 165:
pixdata = (0, 0, 0, 255)
for y in xrange(im.size[1]):
for x in xrange(im.size[0]):
if pixdata[x, y][1] < 165:
pixdata = (0, 0, 0, 255)
for y in xrange(im.size[1]):
for x in xrange(im.size[0]):
if pixdata[x, y][2] > 0:
pixdata[x, y] = (255, 255, 255, 255)
但是,当我做上述时,我得到一个TypeError。 像素数据已正确存储在内存中,但不知道为什么会出现此错误。
if pixdata[x, y][0] < 165:
TypeError: 'int' object has no attribute '__getitem__'
您的问题是您要重新分配pixdata
。 它以Image
对象开始,但随后:
for y in xrange(im.size[1]):
for x in xrange(im.size[0]):
if pixdata[x, y][0] < 165:
pixdata = (0, 0, 0, 255)
现在pixdata
为(或可能为; if
测试可以通过或可能不通过) (0, 0, 0, 255)
pixdata
(0, 0, 0, 255)
。 现在,下次您尝试访问pixdata[x, y][0]
(在同一循环的后续迭代中,或在以后的另一循环中)时,您尝试索引为(0, 0, 0, 255)
而不是图片数据,这显然行不通。
解决方案:如果仍然需要,请不要丢弃pixdata
。 您可能希望pixdata[x, y] = (0, 0, 0, 255)
。 您在第三个循环中做了正确的事情,在前两个循环中做了同样的事情。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.