2017-01-02 3 views
0

Ich war in der Lage, Bilder mit einer homography-Matrix unter Verwendung der cv2.warpPerspective Funktion umzuwandeln/zu verzerren. Wenn ich jedoch openCV nicht verwende und etwas Low-Level verwenden möchte - derzeit verwende ich OpenGL, um einige Grafiken zu zeichnen, und ich möchte eine bekannte Homographiematrix auf bestimmte Ecken anwenden, kann ich keine Homographiematrix als anwenden wie z:OpenCV: Was macht cv2.warpPerspective?/versuchen, Homographien zu verstehen

Für Punkt (x, y), I machen es (x, y, 1). Dann multipliziere ich mit meiner homographischen Matrix H * (x, y, 1). H ist 3x3-Matrix und (x, y, 1) ist 3x1, also erhalte ich ein neues (x ', y', z '), das 3x1 ist. Aber dieser Punkt scheint nicht richtig zu sein?

Ich konnte den richtigen transformierten neuen Punkt mit der Methode hier erhalten: https://math.stackexchange.com/questions/296794/finding-the-transform-matrix-from-4-projected-points-with-javascript, aber ich möchte wirklich wissen, warum das nicht funktioniert!

+0

See [DIESE POST] (http://www.pyimagesearch.com/2014/05/05/building-pokedex-python-opencv-perspective-warping-step-5-6/) für mehr und die dazugehörigen Links –

+0

@JeruLuke Ich habe das gesehen, und ich kann cv2.warppperspective korrekt kein Problem verwenden. Mein Problem ist, warum kann ich die Matrix nicht direkt mit Punkten multiplizieren? – korp

+0

zu tun, dass Sie die 'cv2.findHomography()' Funktion verwenden könnten. Holen Sie sich die Punkte vom Bild ** Quelle **, das Sie auf den Punkt im Bild ** Ziel ** abbilden möchten. –

Antwort

0

Dies ist eine alte Frage, aber ich sah es nur in Verwandten auf der Seite auf eine Frage, die ich vor kurzem beantwortet, und dachte, ich würde hier falls andere stolpern diesen läutet. Siehe here, um die direkte Frage zu beantworten, warum Ihre Punkte falsch waren, und here für eine sehr detaillierte Antwort, in der genau besprochen wird, wie Punkte transformiert werden und wie Sie sie selbst abbilden können.

Verwandte Themen