ich eine calcOpticalFlowPyrLK machen will von Merkmalspunkten von Bild zu erhalten, wenn ich goodFeaturesToTrack verwenden, ist alles in Ordnung, wie folgend:Wie KeyPointVector übertragen Mat in javaCV
goodFeaturesToTrack(blackOutImagePrev, prevCorners, 200, 0.04, 30);
calcOpticalFlowPyrLK(blackOutImagePrev, blackOutImageNext, prevCorners, nextCorners, status, err);
Durch die Ausgabe der Verarbeitungsgeschwindigkeit, I will die Funktion ändern, dass ich Feature Punkte zum surfen oder schnellen Verfahren bekomme. Für die Brandung, die Funktion ist:
final KeyPointVector kp = new KeyPointVector();
final SURF surf = SURF.create(2500, 4, 2, true, false);
surf.detect(image, kp);
Da die Surf-get-Feature-Punkte in KeyPointVector gespeichert sind, aber die Art des prevCorners ist Mat. Wie könnte ich es auf Mat übertragen, damit ich calcOpticalFlowPyrLK aufrufen kann? Oder gibt es einen Workaround?
Sieht aus wie ein ['KeyPointVector'] (http://bytedeco.org/javacpp-presets/opencv/apidocs/org/bytedeco/javacpp/opencv_core.KeyPointVector.html) ist nur ein Vektor von [' KeyPoints'] (http://bytedeco.org/javacpp-presets/opencv/apidocs/org/bytedeco/javacpp/opencv_core.KeyPoint.html). Der 'KeyPoints' -Typ hat die [' pt() 'Methode] (http://bytedeco.org/javacpp-presets/opencv/apidocs/org/bytedeco/javacpp/opencv_core.KeyPoint.html#pt--) was wird gebe ein 'Point2f' zurück, mit dem du eine' Mat' konstruieren kannst. Erstelle also die neue "Mat" und durchlaufe den Keypoints-Vektor, hole die Punkte mit 'pt()' und füge ein. –
Danke, ich habe es versucht, es funktioniert. –
Großartig! Ich habe es als Antwort hinzugefügt. –