Ошибка типа: объект builtin_function_or_method не подходит для python - PullRequest
0 голосов
/ 06 октября 2019

Я пишу некоторый код в Medial Axis Transform и получил ошибку типа для моего массива.

import cv2 
import numpy as np

img = cv2.imread('cvSmall.png',0)
print(img.shape)
thresh = 230
maxValue = 255
th, dst = cv2.threshold(img, thresh, maxValue, cv2.THRESH_BINARY_INV);

cv2.imshow('image',dst)

fZero = np.zeros((len(dst),len(dst[0])))

for y in range(0,len(dst)-1):
        for x in range(0,len(dst[0])-1):
            if dst[y][x] == 255:
                fZero[y][x] = 1

print(fZero.shape)

global currentF
global nextF
currentF = np.zeros((len(dst),len(dst[0])))
currentF =  fZero.copy
nextF = np.zeros((len(dst),len(dst[0])))

def iterationFunction():
    for y in range(1,len(dst)-2):
        for x in range(1,len(dst[0])-2):
            nextF[y][x] += fZero[y][x]
            nextF[y][x] +=  min((currentF[y-1][x]), (currentF[y+1][x]), (currentF[y][x-1]),(currentF[y][x+1]))
#Error in this line

    print (nextF)

iterationFunction()

И вот эта ошибка, которую я получаю:

строка 37, в итерацииFunction nextF [y] [x] + = min ((currentF [y-1] [x]), (currentF [y + 1] [x]), (currentF [y] [x-1]), (currentF [y] [x + 1]))

Ошибка типа: объект builtin_function_or_method не может быть подписан

Ответы [ 2 ]

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

Эта ошибка означает, что вы используете [] вместо () при вызове функции.

В вашем коде currentF = fZero.copy должно быть currentF = fZero.copy()

. currentF функция, а не результат вызова функции. Так что выдает ошибку при попытке сделать currentF[x].

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

Я думаю, вам нужно изменить currentF = fZero.copy на currentF = fZero.copy(). Вы устанавливаете currentF для функции copy, не вызывая copy() и устанавливаете currentF для результата.

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