1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
void imageRt90 (IplImage ** img)
{
float B[3][3] = { {1,0,0}, {0, 1, 0}, {0, 0, 1} };
CvMat map_matrixQuad = cvMat( 3, 3, CV_32F, &B[0][0] );
CvPoint2D32f startQuad[4];
CvPoint2D32f transformedQuad[4];
startQuad[0].x = 0;
startQuad[0].y = 0;
startQuad[1].x = 0;
startQuad[1].y = (*img)->height;
startQuad[2].x = (*img)->width;
startQuad[2].y = (*img)->height;
startQuad[3].x = (*img)->width;
startQuad[3].y = 0;
transformedQuad[0].x = 0;
transformedQuad[0].y = (*img)->height;
transformedQuad[1].x = (*img)->width;
transformedQuad[1].y = (*img)->height;
transformedQuad[2].x = (*img)->width;
transformedQuad[2].y = 0;
transformedQuad[3].x = 0;
transformedQuad[3].y = 0;
// Créer un transfomation perspective d'une rotation a 90° anti-trigo
cvGetPerspectiveTransform( transformedQuad,startQuad , &map_matrixQuad );
IplImage* temp=cvCreateImage(cvGetSize((*img)),(*img)->depth,(*img)->nChannels);
// Effectue la rotation 90°
cvWarpPerspective( (*img), temp, &map_matrixQuad);
(*img)=cvCloneImage(temp);
cvReleaseImage(&temp);
} |
Partager