TypeError: Das Objekt „builtin_function_or_method“ kann nicht abonniert werden (wenn es nicht möglich sein sollte)Python

Python-Programme
Anonymous
 TypeError: Das Objekt „builtin_function_or_method“ kann nicht abonniert werden (wenn es nicht möglich sein sollte)

Post by Anonymous »

Ich erhalte diesen Fehler regelmäßig von Bildverarbeitungscode, der Berechnungen für jedes Pixel zweier Bilder durchführt, um sie zu vergleichen: Hier ist ein minimaler Codeabschnitt, der den Fehler reproduzieren sollte, dies aber (frustrierenderweise) nicht tut. Im Moment ist es egal, dass ich cv2 nicht „richtig“ verwende, der echte Code rechnet mehr mit den RGB-Werten. One.jpg und two.jpg haben identische Formen.

Code: Select all

import cv2

if __name__ == "__main__":
one_in = cv2.imread("one.jpg")
two_in = cv2.imread("two.jpg")
one = cv2.cvtColor(one_in, cv2.COLOR_BGRA2BGR)
two = cv2.cvtColor(two_in, cv2.COLOR_BGRA2BGR)
numPixels = 0
for y in range(one.shape[1]):
for x in range(one.shape[0]):
numPixels += 1
r = abs(float(one[x,y][0]) - float(two[x,y][0]))
g = abs(float(one[x,y][1]) - float(two[x,y][1]))
b = abs(float(one[x,y][2]) - float(two[x,y][2]))
diff = (r,g,b)
#print(str(diff) + str(numPixels))
... in meinem Labor wird der Fehler einmal aus mehreren zehn Millionen Pixeln ausgegeben und ist bei den meisten Bildvergleichen erfolgreich. Eins und zwei sind definitiv Bilder, die von cv2 in Arrays geladen werden, sie werden nicht überladen und als etwas nicht abonnierbares neu definiert. Stacktrace ist genau das:

Code: Select all

>               r = abs(float(self.reference_image_flat[x,y][0]) - float(self.captured_image_flat[x,y][0]))
E               TypeError: 'builtin_function_or_method' object is not subscriptable

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post