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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
| ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//*** programme :
// ecrit le: 24/05/2010
// par:Aydi walid
// encadré par:Mrs : Nouri Masmoudi et Lotfi Kamoun
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include <cv.h>
#include <highgui.h>
#include <cvaux.h>
#include <stdio.h>
int main()
{
// Initialisations
// image de base, et sa version « niveaux de gris »
IplImage* img;
//chrgement image jpeg
img= cvLoadImage( "image_filtré.jpg");
//teste si image est chargée
if(img==NULL) printf("Impossible de charger le fichier image: \n");
//cvGetSize(img) ou cvSize(640,480) ** IPL_DEPTH_8U means an 8-bit unsigned image ** 1 means grayscale image
IplImage* img_nvg ;
//creation d'une image
img_nvg = cvCreateImage( cvGetSize(img),IPL_DEPTH_8U,1);
// creation du gradient horz et vert
IplImage* gradienthorz = cvCreateImage( cvGetSize( img ), IPL_DEPTH_8U,1);
IplImage* gradientvert = cvCreateImage( cvGetSize( img ), IPL_DEPTH_8U,1);
// Masques de convolution ** allocation de matrice "cvCreateMat"
CvMat* masquehorz = cvCreateMat( 1, 3, CV_32FC1);
CvMat* masquevert = cvCreateMat( 3, 1, CV_32FC1);
//| 0 -1 1| gradient Horizontale
cvSetReal2D(masquehorz, 0,0, 0);
cvSetReal2D(masquehorz, 0,1,-1);
cvSetReal2D(masquehorz, 0,2, 1);
//| 0 | gradient verticale
//| -1 |
//| 1 |
cvSetReal2D(masquevert, 0,0, 0 );
cvSetReal2D(masquevert, 1,0,-1);
cvSetReal2D(masquevert, 2,0, 1);
//cvConvert(img,img_nvg);
// Convolution
cvFilter2D( img_nvg,gradienthorz,masquehorz );
cvFilter2D( img_nvg,gradientvert,masquevert);
// Affichage
//cvNamedWindow("originale",CV_WINDOW_AUTOSIZE );
cvNamedWindow("originale",CV_WINDOW_AUTOSIZE);
cvNamedWindow( "gradient_horizontale",CV_WINDOW_AUTOSIZE);
cvNamedWindow( "gradient_verticale", CV_WINDOW_AUTOSIZE );
cvShowImage( "originale",img );
cvShowImage( "gradient_horizontale",gradienthorz );
cvShowImage( "gradient_verticale", gradientvert );
cvSaveImage("gradienthorz.jpg",gradienthorz);
cvSaveImage("gradientvert.jpg",gradientvert);
cvWaitKey(0);
// Destruction des fenêtres
cvDestroyAllWindows();
// Libération de la mémoire
cvReleaseImage( &gradienthorz);
cvReleaseImage( &gradientvert);
cvReleaseMat( &masquehorz);
cvReleaseMat( &masquevert);
cvReleaseImage( &img_nvg);
return 0;
} |
Partager