Bonjour,
Dans le cadre de mon cursus d'ingénieur, je dois réaliser un projet en C++ sur le traitement d'image, c'est à dire réaliser une interface sur la console afin d'ouvrir une image, lui affecté des modifications (flou, negatif...) et la ré-enregistrer. j'ai déjà crée l'interface, obtenu les codes sources mais quelque chose ne marche pas, j'ai oublier quelque chose, comme si chaque void ne renvoyer rien. Pourriez vous regarder ce qui ne va pas si vous avez un peu temps de libre (je n'ai pas mis tout le code par soucis de place et de clarté)
Merci d'avance
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
//initialisation des différentes fonctions
string ident,comment;
int largeur, hauteur, pixel_maxi, i, j;
int tab[1200][1200];
char unoctet ;
//ident = Variable de début des fichiers pgm ou ppm (magic code)
//largeur = largeur de la matrice du fichier pgm
//hauteur = hauteur de la matrice du fichier pgm
// pixel_maxi = valeur maximum qu'un pixel peut avoir
//i = ligne de la matrice du bitmap
//j = colonne de la matrice du bitmap
//tab = tableau dans lequel on va placer les chiffres des pixels
//fonction chargement
void lecture(){
string nom_image; //variable du nom de l'image
cout << "Entrez le nom de l'image" << endl;
cin >> nom_image;
ifstream fin (nom_image.c_str());
fin >> ident;
if (ident != "P5") { cout << "type d’image non traitée " <<endl ;
return ; // modifier selon le type
}
//fin.get(unoctet) ;
fin >> largeur >> hauteur;
fin >> pixel_maxi;
cout << "largeur "<< largeur<< "hauteur "<< hauteur << endl;
for (i = 0; i<hauteur ;i++){
for (j = 0; j<largeur; j++){
fin >> tab[i][j];
}
}
cout<<"Image chargee"<<endl;
}
// fonction ecrire
void ecrire(){
string image_sauvegardee;
cout << "Entrez le nom du fichier de sauvegarde" << endl;
cin >> image_sauvegardee;
ofstream fout (image_sauvegardee.c_str());
fout << ident << endl;
fout << largeur << " " << hauteur << endl;
fout << pixel_maxi << endl;
for (i=0 ; i<hauteur ; i++){
for (j=0 ; j<largeur ; j++){
fout << tab[i][j] << " ";
}
fout<<endl;
}
}
//fonction luminosité
void luminosite(){
int degre;
cout<<"Introduisez la valeur de votre changement de luminosite " << endl;
cout<<"(Introduisez un nombre negatif si vous voulez noircir.)" << endl;
cin>> degre;
for (i=0 ; i<hauteur ; i++){ //avec ces deux boucles for on va pouvoir rajouter ou enlever un certain // nombre à tous les pixels
for (j=0 ; j<largeur ; j++){
tab[i][j]=tab[i][j] + degre;
if (tab[i][j]<0){ tab[i][j]=0; }
else if (tab[i][j]>255) tab[i][j]=255;
} // fin if < 0
} // fin for j
} // fin for i
//fonction principale pour montrer un exemple de menu
int main () {
int numero;
// numero = le chiffre entré par l'utilisateur en fonction de son choix dans le menu
do {
cout << "\t \t Menu" << endl;
cout << endl;
cout << "0) Charger une image" << endl;
cout << "1) Sauvegarder une image" << endl;
cout << "2) Changer la luminosite" << endl;
cout << "3) Decouper l'image" << endl;
cout << "4) Produire le negatif" << endl;
cout << "5) Produire un flou gaussien" << endl;
cout << "6) quitter" << endl;
cout <<endl;
cout << " Choisissez votre numero" << endl;
cout << endl;
cin >> numero;
switch (numero){
case 0: lecture (); cout << endl; break; // on fait appel à la fonction lecture
case 1: ecrire(); cout<< endl; break; // on fait appel à la fonction ecrire
case 2: luminosite(); cout << endl; break; // on fait appel à la fonction luminosite
case 3: decoupe(); cout << endl; break; // on fait appel à la fonction decoupe
case 4: negatif(); cout << endl; break; // on fait appel à la fonction negatif
case 5: gaussien(); cout << endl; break; // on fait appel à la fonction flou gaussien
case 6: quitter(); cout << endl; break; // on fait appel à la fonction quitter
}
if (numero>6 || numero<0){
cout << "vous avez tape un mauvais choix" <<endl;
cout << endl;
}
} while (numero != 6);
return 0;
}