繁体   English   中英

初始化对象错误TypeError:“ int”对象没有属性“ __getitem__”

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM