Ich schreibe ein Stück Code, der prüft, ob ein um eine Form erzeugtes Begrenzungsrechteck innerhalb eines anderen festen Rechtecks liegt . Dies ist der Code-Abschnitt, wo der Fehler vorliegt:Variable ändert sich in eine Liste, die ValueError verursacht: Verwenden Sie a.any() oder a.all() Opencv Python
rectangle = cv2.rectangle(frame, (150, 50), (450, 400), (0, 255, 0), 2)
if ID != -1:
cnt = contours[ID]
x, y, w, h = cv2.boundingRect(cnt)
cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
x2 = x+w
y2 = y+h
if x > 150:
if y > 50:
if x2 < 450:
if y2 < 400:
print "inside"
N. B Zurück Teile des Codes die größte Kontur finden und ein Begrenzungsrechteck um ihn herum zu ziehen. Dieser Teil funktioniert gut, ich dachte nur, ich würde es für ein bisschen Kontext erwähnen.
Die im Fehler bekommen ist:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Das Problem ist, das Programm funktioniert für eine Weile, Druck im Inneren succeessfully, wenn die Form innerhalb des Rechtecks ist. Nach einer Weile stürzt das Programm jedoch ab und zeigt die Fehlermeldung an.
Davon denke ich, dass die Variable x
aus irgendeinem Grund in eine Liste konvertiert, da dies die Zeile ist, in der der Fehler auftritt.
Würde jemand wissen, wie man das behebt? Vielen Dank.
Woher erhält x seinen Wert, wenn ID gleich -1 ist? – Kevin
Verwenden Sie 'numpy' in diesem Programm zufällig? – ppperry
Liegt das an einem Einzugsproblem? Sollten 'if x ...' und andere Vergleiche nur dann stattfinden, wenn 'ID! = -1' –