首页 > 解决方案 > Python 列表乘法

问题描述

我目前正在尝试运行以下代码

from PIL import Image

img = Image.open('C:/Users/j.png') 

WIDTH, HEIGHT = img.size

imgData = list(img.getdata())  =
imgData = [imgData[offset:offset + WIDTH] for offset in range(0, WIDTH * HEIGHT, WIDTH)]

def function_sum2_x():
    sum2_x = 0
    for i in range(0, HEIGHT - 1):
        for j in range(0, WIDTH - 1):
            sum2_x += imgData[i][j] * imgData[i][j]

    return sum2_x

print(function_sum2_x())

虽然我收到以下错误:第 25 行,在 function_sum2_x sum2_x += imgData[i][j] * imgData[i][j] TypeError: can't multiply sequence by non-int of type 'tuple'

此代码的目的是用于比较 2 个图像的数学公式。对于上下文,我的图像是黑白二进制。我最初认为问题是由于在“imgData”中将 0 值乘以彼此,但是在将所有 0 转换为 1 之后,我遇到了同样的问题。

经过一些在线研究后,我发现列表乘法存在一些问题,所以现在我认为这可能是问题所在。我发现一些消息来源说要使用这条线

newarr= map(lambda x: i*x, imgData) 

但是我不确定如何实现这一点,以及它是否真的对解决这个错误有用

标签: pythonlistimage-processingmultidimensional-array

解决方案


我猜你有一个彩色图像,Image.convert()用来将它转换为灰度图像。即使您的图像在图像查看器中是黑白的,但这并不意味着它在内部以这种方式保存。


推荐阅读