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
| #include <iostream>
#include "cv.h"
#include "highgui.h"
//#include "Globale.h"
using namespace std;
/*les deux fonctions qui font la convertion entre la matrice
et l'image */
void mat2image(double **matrice,IplImage *image)
{
CvScalar pixel_val;
int x,y;
for(x=0; x<image->width; x++)
for(y=0; y<image->height; y++)
{
pixel_val = cvGet2D(image,y,x);//toutes les composantes YCrCb
pixel_val.val[0] = matrice[x][y];//Y
cvSet2D(image, y, x,pixel_val);
}
}
void image2mat(IplImage *image, double **matrice)
{
CvScalar pixel_val;
int x, y;
for(x=0; x<image->width; x++)
for(y=0; y<image->height; y++)
{
pixel_val = cvGet2D(image,y,x);
matrice[x][y]=pixel_val.val[0];//Y
}
}
// Debut du programme
int main(int argc, char** argv)
{
// cout << "Hello world!" << endl;
// cout << "Bonjour tout le monde !" << endl;
IplImage *img = cvLoadImage("lena.jpg", 0);// lire l image
int h = img->height;
int w = img->width;
double ** matrice;
matrice = fl_alloc2d(w ,h);
image2mat(img,matrice); // une fonction qui convertit l'iamge en matrice
//ajouter un chiffre à chaque pixel de l'image
//double matrice[600][600];
for (int i=0; i<h; i++)
{
for (int j=0; j<w; j++)
{
matrice[i][j]= matrice[i][j]+20; // le chiffre ajouter ici est 20
// c'est juste un exemple
}
}
/*---------------------------------------------------------------------------------------------------
| normalement au lieu d'avoir une matrice je dois avoir un vecteur donc je dois convertir la matrice |
| en vecteur ensuite appliquer la marque qui est ici un ajout d'un chiffre et ensuite la convertir |
| de nouveau en une matrice :: |
| - convertir matrice en un vecteur :: matrice --> vecteur |
| - appliquer la marque
| - convertir vecteur en matrice :: vecteur-->matrice |
| |
-----------------------------------------------------------------------------------------------------*/
mat2image(matrice,img); // une fonction qui convertit la matrice en image
cvNamedWindow("image", CV_WINDOW_AUTOSIZE); //cree un fentre pour afficher l image
cvShowImage("image", img); // affichage de l image
cvWaitKey(0); // pause en attendant de paC à l etape suivante
cvDestroyWindow("image"); // pour detruire l a le
cvSaveImage("image.bmp",img); // pour enregistrer l'image
cvReleaseImage( &img ); // liberatuion de memoire
return 0;
} |
Partager