【问题标题】:Python List MultiplicationPython 列表乘法
【发布时间】: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.modeimg.info 向您展示了什么?我认为您的想象是颜色,即使您认为它是黑白的,这就是为什么每个像素都是一个元组而不是单个值的原因。

标签: python list image-processing multidimensional-array


【解决方案1】:

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

【讨论】:

  • 是的,我使用代码将图像转换为 BW 二进制,但是这 1 个图像从裂缝中溜走了。感谢现场。
  • 不客气!请将问题标记为已解决 - 这样可以为不想阅读已回答问题的人节省时间。
猜你喜欢
  • 2020-10-22
  • 1970-01-01
  • 2011-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多