【发布时间】:2020-05-30 23:02:23
【问题描述】:
我目前正在尝试运行以下代码
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:不能将序列乘以“元组”类型的非整数
此代码的目的是用于比较 2 张图像的数学公式。对于上下文,我的图像是黑白二进制。我最初认为问题是由于在“imgData”中将 0 值乘以彼此,但是在将所有 0 转换为 1 后,我遇到了同样的问题。
经过一些在线研究,我发现列表乘法存在一些问题,所以现在我认为这可能是问题所在。我发现一些消息来源说要使用这条线
newarr= map(lambda x: i*x, imgData)
但是我不确定如何实现这一点,以及它是否真的对解决这个错误有用
【问题讨论】:
-
img.mode和img.info向您展示了什么?我认为您的想象是颜色,即使您认为它是黑白的,这就是为什么每个像素都是一个元组而不是单个值的原因。
标签: python list image-processing multidimensional-array