2012-06-28 2 views
2

J'essaie d'utiliser OpenCV 2.0 pour prendre trois points, qui forment essentiellement un triangle, dans une image. Ce que j'essaie de faire avec ces trois points est de les utiliser comme référence pour l'inclinaison. Ce que je suis en train de réaliser est mieux expliqué à l'image suivante:OpenCV: inclinaison d'une image basée sur la sélection triangulaire

enter image description here

Before            After 

Je suis assuré d'avoir mon image dans le format ci-dessus, donc je sais que le seul point que je dois attention activement est le point où l'angle de 90 degrés est formé. En bref, j'essaie simplement d'incliner mon image par rapport à la position du point où l'angle de 90 degrés est formé.

Y a-t-il un moyen de le faire dans OpenCV? (De préférence en C++)

+0

duplication possible de [Mise en angle d'une image à l'aide de Transformations en perspective] (http://stackoverflow.com/questions/2446494/skewing-an-image-using-perspective-transforms) – karlphillip

+0

Je ne pensais pas que cela serait dû à le fait que la question est extrêmement restreinte à un cas spécifique - et pas seulement une question générique biaisée. –

Répondre

1

Eh bien, je n'ai jamais travaillé avec un tel type de transformation mais je peux en quelque sorte vous aider.

Après quelques googler, j'ai trouvé question semblable à la vôtre sur StackOverflow:

Skewing an image using Perspective Transforms

Jacob a une excellente réponse à cette question. Il semble que de tout ce que les types de transformations (rotation, cisaillement, traduction et mise à l'échelle) ne cisaillement peut vous aider (voir image ci-dessous):

shearing image

Et la matrice de transformation est le suivant:

enter image description here

Pour faire ce type de transformation dans OpenCV, il y a la fonction cv::warpPerspective - alors essayez-le.

Espérons que ça aide.

+0

Pourriez-vous aller plus en profondeur sur Shearing? Je suis confus sur ce que c'est exactement. –

+0

@AlexWilliams Avez-vous lu cette discussion? Aussi [lien wiki] (http://en.wikipedia.org/wiki/Shear_mapping). – ArtemStorozhuk

+0

Je l'ai fait! Ça a aidé un peu. J'ai fini par trouver un autre lien qui allait plus en profondeur sur la transformation des objets triangulaires. Voici le lien: http://opencv.itseez.com/doc/tutorials/imgproc/imgtrans/warp_affine/warp_affine.html Par ailleurs, j'apprécie la réponse! Accepter comme il a finalement conduit à moi de trouver ce dont j'avais besoin. Merci! –

Questions connexes