Python图像库:无法访问像素值

Python图像库:无法访问像素值,python,python-imaging-library,Python,Python Imaging Library,我想比较两个图像并保存一个差异图像,其中差异用红色标记。 不幸的是,我得到了以下错误: 执行到灰度图像的转换后,将为每个像素指定一个值,而不是RGB三元组 摘自: 当从彩色图像转换为黑白图像时,库 使用ITU-R 601-2 luma变换: L = R * 299/1000 + G * 587/1000 + B * 114/1000 因此,如果[x,y]=[0,0]处的像素的(R,G,B)值为(100150200),那么在转换为灰度后,它将包含单个值140.75(然后将四舍五入为整数) 您可以

我想比较两个图像并保存一个差异图像,其中差异用红色标记。 不幸的是,我得到了以下错误:


执行到灰度图像的转换后,将为每个像素指定一个值,而不是RGB三元组

摘自:

当从彩色图像转换为黑白图像时,库 使用ITU-R 601-2 luma变换:

L = R * 299/1000 + G * 587/1000 + B * 114/1000
因此,如果[x,y]=[0,0]处的像素的(R,G,B)值为(100150200),那么在转换为灰度后,它将包含单个值140.75(然后将四舍五入为整数)

您可以通过在嵌套循环之前检查pix_diff[0,0]的值来验证这一点。它应该只返回一个值

因此,在为每个像素指定
(255,0,0)

的值之前,您需要为像素差异[y,x]中的每个像素指定一个灰度值,或者将像素差异图像转换回与RGB兼容的格式“对于单波段图像,颜色以单个数值表示,对于多波段图像,颜色以元组表示。”您是否需要将元组转换为单个值?
def compare(sPathCur, sPathRef, sPathDif):
    im_cur = Image.open(sPathCur)
    im_ref = Image.open(sPathRef)

    im_dif = im_cur.convert('L')  # convert image to grey scale

    delta = ImageChops.difference(im_cur, im_ref)
    width, height = delta.size

    pix_delta = delta.load()
    pix_diff = im_dif.load()

    for y in range(width):
        for x in range(height):
            r, g, b = pix_delta[y, x]
            if (r > 0 or g > 0 or b > 0):
                pix_diff[y, x] = (255, 0, 0)

    im_dif.save(sPathDif)
L = R * 299/1000 + G * 587/1000 + B * 114/1000