OpenCV Warping Image basierend auf calcOpticalFlowFarneback

Ich versuche, eine komplexe Verzerrung eines Bildes mit Dense Optical Flow durchzuführen (ich versuche, das zweite Bild in etwa die gleiche Form wie das erste Bild zu bringen). Ich verstehe das wahrscheinlich alles falsch, aber ich poste, was ich versucht habe:

cv::Mat flow;
cv::calcOpticalFlowFarneback( mGrayFrame1, mGrayFrame2, flow, 0.5, 3, 15, 3, 5, 1.2, 0 );

cv::Mat newFrame = cv::Mat::zeros( frame.rows, frame.cols, frame.type() );
cv:remap( frame, newFrame, flow, cv::Mat(), CV_INTER_LINEAR );

Die Idee, ob ich die Fließmatte aus 2 Graustufenrahmen berechne. Ich erhalte eine Flow-Matte zurück, die sinnvoll erscheint, aber jetzt versuche ich, mein Originalbild (dh nicht in Graustufen) mithilfe dieser Flow-Informationen neu zuzuordnen.

Ich habe angenommen, dass die Remap-Funktion das ist, was ich will, aber ich bekomme ein sehr stark verzerrtes Bild davon. Keine meiner Farbinformationen ist erhalten. Am Ende habe ich einfach ein orange-schwarzes Bild, das ein wenig mit meinem Originalbild übereinstimmt.

Ich vermute, dass ich die Remap-Funktion falsch verstehe und sie entweder nicht das tut, was ich möchte, oder dass ich etwas falsch mache, was ich übergebe.

Hat jemand Vorschläge, wie ich dieses Problem lösen kann? Wenn letzteres, was mache ich dann falsch?

Jede Hilfe sehr geschätzt!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage