Ich habe den Python-Implementierungscode von Dense Optical Flow ausgeführt, der auf der offiziellen Dokumentationsseite angegeben ist. An einer bestimmten Zeile des Codes verwenden sie
mag, ang = cv2.cartToPolar (Fluss [..., 0], Fluss [..., 1]). Wenn ich die Werte von Mag drucken, ich diese bekommen - Please check this image for the output I'm gettingWas genau ist die Ausgabe, wenn wir den dichten optischen Fluss (Farnnback) laufen lassen?
ich keine Ahnung, wie Sinn dieser Ausgabe zu machen.
Mein Ziel ist es, den optischen Fluss zu verwenden, um einen resultierenden oder durchschnittlichen Bewegungswert für jeden Frame zu erhalten.
Vielen Dank Herr, für Ihre Erkenntnisse. Ich habe mich gefragt, ob es eine Möglichkeit gibt, die durchschnittliche Bewegung während des gesamten Videos zu finden. Wie gesagt, eine Frame-Nummer 199 hat eine Gesamtbewegung von etwa 14.035, ebenso gibt es eine Möglichkeit, Frames und den gesamten durchschnittlichen Bewegungswert in diesem Frame zu erhalten, der sich über das gesamte Video erstreckt? – AdaMStrange
@AdaMStrange um die Bewegung zu berechnen, benötigen Sie einen Referenzrahmen und einen neuen Rahmen, wenn Sie dies für den Rahmen 199 tun, müssen Sie einen Referenzrahmen auswählen ... vielleicht Rahmen 1 oder Rahmen 198. Dann können Sie die Größenordnungen mitteln und sagen die durchschnittliche Bewegung in diesem Rahmen in Bezug auf die Referenz. Das gleiche wäre es in dem Video, Sie müssen definieren, was Ihr Referenzrahmen ist und die Pixelbewegung erhalten. Es ist wichtig zu beachten, dass, wenn die zwei Bilder völlig unterschiedlich sind (z. B. Szenenwechsel), Sie möglicherweise unerwünschte Ergebnisse erhalten. Um Frames eines Videos zu erhalten, benutze VideoCapture von OpenCV – api55
@AdaMStrange noch eine Sache, diese Methoden sind ziemlich langsam, wenn es nur ein Teil des Bildes ist, schneide es zuerst oder benutze vielleicht die spärlichen Methoden. – api55