&引用;类型错误:';int';“对象不可编辑”;当我试图在python中使用getpixel()时
我试图运行一个python脚本(Python2.6),其中包含如下代码&引用;类型错误:';int';“对象不可编辑”;当我试图在python中使用getpixel()时,python,python-imaging-library,Python,Python Imaging Library,我试图运行一个python脚本(Python2.6),其中包含如下代码 import Image def is_grey_scale(img_path="lena.jpg"): im = Image.open(img_path) w,h = im.size for i in range(w): for j in range(h): r,g,b,_ = im.getpixel((i,j)) if r != g
import Image
def is_grey_scale(img_path="lena.jpg"):
im = Image.open(img_path)
w,h = im.size
for i in range(w):
for j in range(h):
r,g,b,_ = im.getpixel((i,j))
if r != g != b:
return False
return True
它正在报告以下定义的错误
r,g,b, _ = im.getpixel((i, j))
TypeError: 'int' object is not iterable
您能告诉我这里的错误是什么吗。情况如下 您正在尝试将从
im.getpixel((i,j))
返回的结果解压缩为4个变量r,g,b,
为了实现这一点,im.getpixel
必须返回一个列表、一个元组或另一个iterable,这将只为变量提供4个值。或多或少地提供会产生问题
但是在您的例子中,函数
im.getpixel((i,j))
返回一个int
,这无论如何都不是一个可数,因此它会抱怨。方法的定义是
def getpixel(self, xy):
"""
Returns the pixel value at a given position.
:param xy: The coordinate, given as (x, y).
:returns: The pixel value. If the image is a multi-layer image,
this method returns a tuple.
您的图像是“多层图像”吗?我假设在所有的图像处理课程中都使用相同的图像 或者您可以尝试
a,b,c=1
,您将得到类型错误
,正如答案所示。@msvalkon您的案例在示例中是有效的,但您肯定会返回一个iterable。但正如Huu Nguyen所指出的,分配a,b=1
,你会得到TypeError
为了完整性,如果你想访问像素的r,b,g
值,你必须将图像转换成RGB或RGBA图像。有关更多详细信息,请参见此。