Bonjour,
je vous explique mon problème : j'ai une image qui représente un portrait. Je possède la position de chaque œil. J'applique une rotation avec le bout de code ci-dessous :
J'aimerai savoir comment je peux récupérer la nouvelle position des yeux après rotation. Sachant que si M représente la matrice de rotation, il me semblait qu'il suffisait de faire MxP (P = (x,y) étant l'ancienne position d'un oeil) pour trouver la nouvelle position. Après avoir tester, cela ne me renvoie pas la bonne position.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 void RotationImage(IplImage* iBuf, IplImage** oBuf, int angle) { IplImage* lTamp = cvCloneImage(iBuf); float lRotateValues[6]; lRotateValues[0] = (float)(cos(angle*CV_PI/180.)); lRotateValues[1] = (float)(sin(angle*CV_PI/180.)); lRotateValues[3] = -lRotateValues[1]; lRotateValues[4] = lRotateValues[0]; lRotateValues[2] = iBuf->width *0.5f; lRotateValues[5] = iBuf->height *0.5f; CvMat lRotateMatrix = cvMat(2, 3, CV_32F, lRotateValues); cvGetQuadrangleSubPix(iBuf,lTamp,&lRotateMatrix); *oBuf = lTamp; }
S'il y a quelqu'un pour m'aider, ça serait super ! Merci d'avance
Partager