Rotation et position d'un point
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 :
Code:
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;
} |
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.
S'il y a quelqu'un pour m'aider, ça serait super ! Merci d'avance