Je n'arrive pas a trouver de fonction sous openCV effectuant une simple rotation d'image? En existe t'il une (se qui semblerait plus que normal )
Merci
Je n'arrive pas a trouver de fonction sous openCV effectuant une simple rotation d'image? En existe t'il une (se qui semblerait plus que normal )
Merci
Pour ton problème de rotation :
cv2DRotationMatrix() and cvWarpAffine()
(2×3 transformation matrix pour le premier notamment)
car dans tous les cas, il faudra que tu écrives ta rotation sous la forme de matrice de transformation affine
Toujours bloqué sur ma rotation, j'ai trouvé ce code qui fonctionne très bien :
C'est super mais alors quand je veux en faire une fonction en stabilisant à un angle donné, j'arrive à un résultat abérant où l'image est à moitié coupée
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 #include "cv.h" #include "highgui.h" #include "math.h" int main( int argc, char** argv ) { IplImage* src = cvLoadImage("lena.jpg", 1); IplImage* dst = cvCloneImage( src ); int delta = 1; int angle = 0; cvNamedWindow("src", 1); cvShowImage("src", src); for(;;) { float m[6]; CvMat M = cvMat(2, 3, CV_32F, m); int w = src->width; int h = src->height; m[0] = (float)(cos(angle*2*CV_PI/180.)); m[1] = (float)(sin(angle*2*CV_PI/180.)); m[3] = -m[1]; m[4] = m[0]; m[2] = w*0.5f; m[5] = h*0.5f; cvGetQuadrangleSubPix( src, dst, &M); cvNamedWindow("dst", 1); cvShowImage("dst", dst); if( cvWaitKey(1) == 27 ) break; angle =(int)(angle + delta) % 360; } return 0; }
Enfin !!! Wahouuu !!!
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 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; }
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager