Python Умножение списка - PullRequest
       5

Python Умножение списка

0 голосов
/ 15 февраля 2020

В настоящее время я пытаюсь запустить следующий код

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: невозможно умножить последовательность на не-int типа 'tuple'

Цель этого кода - математическая формула для сравнения двух изображений. Для контекста, мое изображение черно-белое двоичное. Первоначально я думал, что проблема будет связана с умножением значений 0 на eachother в «imgData», но после преобразования всех 0 в 1 я получаю ту же проблему.

После некоторых исследований в Интернете я обнаружил некоторые проблемы с умножением списка, поэтому теперь я думаю, что это может быть проблемой. Я нашел некоторые источники, говорящие об использовании строки

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

Однако я не уверен, как это реализовать, и действительно ли это полезно для устранения этой ошибки

1 Ответ

0 голосов
/ 15 февраля 2020

Полагаю, у вас есть цветное изображение, используйте Image.convert(), чтобы преобразовать его в изображение в градациях серого. Даже если ваше изображение черно-белое в программе просмотра изображений, это не значит, что оно сохраняется таким образом изнутри.

...