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
|
int main()
{
//On déclare deux images : celle de base, et celle qui sera étirée
IplImage *image = cvLoadImage("image_test2.jpg");
IplImage *nvg_img = cvCreateImage(cvGetSize(image),IPL_DEPTH_8U,1);
// IplImage *image =cvCreateImage(cvGetSize(inputImage),IPL_DEPTH_8U,1);
cvCvtColor (image,nvg_img,CV_BGR2GRAY);
//IplImage *image_nvg = cvCreateImage(cvGetSize(image),CV_32FC1,1); //image->depth, 1);
/* IplImage* gradienthorz = cvCreateImage(cvGetSize(image),IPL_DEPTH_8U,1);
IplImage* gradientvert = cvCreateImage(cvGetSize(image),IPL_DEPTH_8U,1); */
CvMat Matimage, *ptMatimage = cvGetMat(nvg_img, &Matimage);
CvMat* mathorz = cvCreateMat( ptMatimage->rows, ptMatimage->cols, CV_32F ); //MEME CHOSE AVEC MAT 3*3: 000/-101/000
CvMat* matvert = cvCreateMat( ptMatimage->rows, ptMatimage->cols, CV_32F ); //MEME CHOSE AVEC MAT 3*3: 0-10/000/010
/*
//| 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);
//Correction de l'origine si nécessaire
int flip = 0;
if(image->origin!=IPL_ORIGIN_TL)
{
flip = CV_CVTIMG_FLIP;
}
// cvConvertImage(image, image_nvg, flip);
cvFilter2D( ptMatimage,gradienthorz,masquehorz );
cvFilter2D( ptMatimage,gradientvert,masquevert);*/
cvSobel(ptMatimage,mathorz,1,0,1);//gradient horizontal
cvSobel(ptMatimage,matvert,0,1,1);//gradient vertical
//Etirement d'histogramme
CvMat *magnitude=cvCreateMat( ptMatimage->rows, ptMatimage->cols, CV_32F);
CvMat *orientation=cvCreateMat( ptMatimage->rows, ptMatimage->cols, CV_32F);
cvCartToPolar(mathorz,matvert,magnitude,orientation,0);
//On affiche le résultat dans une fenêtre
cvNamedWindow("originale", CV_WINDOW_AUTOSIZE);
// cvNamedWindow("gradientvert", CV_WINDOW_AUTOSIZE);
// cvNamedWindow("gradienthorz", CV_WINDOW_AUTOSIZE);
cvShowImage("originale", image);
// cvShowImage("gradientvert", gradientvert);
// cvShowImage("gradienthorz", gradienthorz);
//On attend que l'utilisateur appuie sur une touche
cvWaitKey(0);
cvDestroyAllWindows();
cvReleaseImage(&image);
cvReleaseImage(&nvg_img);
// cvReleaseImage(&gradientvert);
// cvReleaseImage(&gradienthorz);
return 0;
} |
Partager