2011-02-14 3 views
2


J'ai une image où l'utilisateur sélectionne un polygone arbitraire à 4 coins.
Je souhaite étirer ce polygone dans l'ensemble de l'image.
J'ai essayé de le faire avec homography et cvWarpPerspective,
mais le résultat était une transformation de Perspective, ce qui n'est pas ce que je veux.
Des idées pour ce faire avec OpenCV/EMGU?

Merci,
SWComment faire pour déformer l'image non-perspective dans OpenCV?

+0

tu veux? Et la projection affine ne peut être ajustée qu'à 3 points (parallélogramme). – Niki

+0

Pouvez-vous poster une image d'entrée et la sortie attendue? –

Répondre

0

Qu'est-ce que vous essayez devrait fonctionner. Calculer l'homographie en faisant correspondre les 4 coins du polygone à (0,0) (0, hauteur) (largeur, 0) et (largeur, hauteur).

Jetez un oeil à GetPerspectiveTransform

0

Je pense que ce que vous voulez est un renversement de perspective de transformation.

Voici ce que vous devez faire. Supposons que vous ayez le polygone aux emplacements (x1, y1) .... (x4, y4) à l'origine sur votre écran (0,0) .... (w, h). L'application de la transformation de perspective à l'aide de cvWarpPerspective/getPerspectiveTransform vous permet d'obtenir les coordonnées d'origine aux coordonnées connues. Donc, vous devez fondamentalement multiplier les coordonnées connues avec l'inverse de la matrice de transformation de perspective (à moins que ce soit non-inversible, auquel cas vous devez ajouter un terme delta au terme homogène-coordonné)