mitchecool
Messages postés1Date d'inscriptionmardi 4 février 2014StatutMembreDernière intervention 4 février 2014
-
Modifié par pijaku le 4/02/2014 à 16:25
Bonjour j'ai un script ecrit sur codeblocks l'astuce est simple je dois afficher une image inserer une marque ( le tatouge numérique ) et visionner l'image après insertion de la marque et finalement je dois l'enregistere. tout ceci je l'ai fait le probleme c'est que j'utilise pour l'insertion le scrit de quelqu'un d'autre ( cox & al ) et il utilise l'image comme un vecteur donc je dois convertir l'image en un vecteur . j'ai pu convertir l'image à une matrice mais je n'arrive pas à la convertir en un vecteur ( je vous signal que je suis débutante en C++ et openCV ) donc SVP si quelqu'un peut m aider à trouver le chemin . Merci
#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;
}