NameError: глобальное имя 'balanceAr' не определено - PullRequest
0 голосов
/ 08 октября 2019

Я получаю следующую ошибку (важна последняя строка) для приведенного ниже кода:

Предупреждение (из модуля предупреждений): Файл "C: / [расположение_файлов] / ittivation 4.py",строка 12

avgNug = уменьшите (лямбда x, y: x + y, eachPix [: 3]) / len (eachPix [: 3])

RuntimeWarning: переполнение, обнаруженное в ubyte_scalars

Трассировка (последний вызов был последним):

Файл "C: / [расположение_файла] / ittivation 4.py", строка 45, в

порог (iar4)

Файл "C: / [расположение_файла] / ittivation 4.py", строка 13, в пороге

balanceAr.append (avgNum)

NameError: глобальное имя 'balanceAr' не являетсяопределены

Я пытался написать «глобальный» перед ним, определив его вне определения, с несколькими синтаксисами для «глобального» определения.

Код взят извидео sentdex https://www.youtube.com/watch?v=nych18rsXKU, где работает этот код.

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

from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
import time

def threshold(imageArray):
balaceAr = []
newAr = imageArray

    for eachRow in imageArray:
        for eachPix in eachRow:
            avgNug = reduce(lambda x, y: x + y, eachPix[:3])/len(eachPix[:3])
            balanceAr.append(avgNum)
    balance = reduce(lambda x, y: x + y, balanceAr)/len(balanceAr)

    for eachRow in newAr:
        for eachPix in eachRow:
            if reduce(lambda x, y: x + y, eachPix[:3])/len(eachPix[:3]) > balance:
                #eachPix 0,1,2,3 = 255
            else:
                #eachPix 0,1,2 = 0
                eachPix[3] = 255

    return newAr

'''in the original code this part is not commented, and there's also a i, i2 and i3
i4 = Image.open('images/sentdex.png')
iar4 = np.array(i4)'''

threshold(iar4)

'''same explanation as previous comment, only coordinates in 2nd () are 0,0;4,0;0,3
fig = plt.figure()
ax4 = plt.subplot2grid((8,6), (4,3), rowspan=4, colspan=3)

ax4.imshow(iar4)
'''

plt.show()

#P.S. I had to write "    " on all lines that didn't have it for stackoverflow
# to interpret it as code, even if it was in the "code" section

Ответы [ 2 ]

0 голосов
/ 08 октября 2019

Ниже определения вашей функции:


balaceAr = [] # <===== Typo

Проверьте опечатки перед публикацией в следующий раз.

0 голосов
/ 08 октября 2019

у вас есть синтаксическая ошибка при декалировании balaceAr = []

вам может потребоваться изменить ее на balanceAr= []

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...