python - 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)
但是我不确定如何实现这一点,以及它是否真的对解决这个错误有用
解决方案
我猜你有一个彩色图像,Image.convert()
用来将它转换为灰度图像。即使您的图像在图像查看器中是黑白的,但这并不意味着它在内部以这种方式保存。
推荐阅读
- python - 使用标签列表创建字典字典
- sql - 如何从同一列中检索两个不同的条件数据集?
- python - 直接在 Airflow DAG 中使用 Python 逻辑是不好的做法吗?
- c++ - C++:“:cout”或“?cout”是什么意思?
- node.js - 如何解决:在 aws-iot-device-sdk nodejs 中的 onclosenexttick 过早关闭?
- reactjs - 如何使用文件夹架构在同一域上部署 laravel 和 reactjs 应用程序?
- python - Python csv to json using pandas - csv 列到嵌套 json
- sql - 查询按部门名称显示人数最多的部门名称
- sql - 如何检查字符串中的字母数字值
- python - 过滤 Pandas 系列并返回值