ich die cv2 Bibliothek bin mit Schlüsselpunkten von 2 Stereo-Bilder zu erfassen und konvertiert die resultierenden dmatches-Objekten in eine numpy Array:Wie man ein numpy Array basierend auf zwei Bedingungen filtert: eine abhängig von der anderen?
kp_left, des_left = sift.detectAndCompute(im_left, mask_left)
matches = bf.match(des_left, des_right) # according to assignment pdf
np_matches = dmatch2np(matches)
Dann möchte ich Spiele filtern, wenn die wichtigsten Punkte sind Filterung nach y- Richtung, die größer als 3 Pixel nicht unterscheiden soll:
ind = np.where(np.abs(kp_left[np_matches[:, 0], 1] - kp_right[np_matches[:, 1], 1]) < 4)
und diejenigen Eckpunkte sollte auch keinen Unterschied kleiner als < 0. Dann bedeutet es der entscheidende Punkt ist, hinter der Kamera.
ind = np.where((kp_left[np_matches[ind[0], 0], 0] - kp_right[np_matches[ind[0], 1], 0]) >= 0)
Wie diese beiden Bedingungen zu kombinieren?
Musterkoffer hinzufügen für 'np_matches',' kp_left', 'kp_right'? – Divakar
Sie könnten die beiden Bedingungen kombinieren, indem Sie eine boolesche Algebra machen. Z.B. 'A = np.bereich (25); np.where ((A> 5) * (A <10)) [0] ', um Werte größer als 5 AND kleiner als 10 zu finden. Hier würden Sie nur das verwenden: 'True * True = True'. Alle anderen Multiplikationen führen zu "Falsch". Es sollte trivial sein, diese Logik auf Ihr Problem zu spezialisieren. * (Eine allgemeine Bemerkung: Eine abstraktere Frage würde bessere Antworten auslösen. Deine Frage hat wenig mit cv2 und all dem zu tun. Es wäre besser, deine Frage zu isolieren) * –