Bonjour, je veux lire une image PGM (P3 ou P5) et stocker les composantes de gris de chaque pixels dans une matrice (qui est assimilée à un tableau à 2 dimensions).
J'ai une classe matrice qui crée un tableau dynamique de la taille de l'image (largeur et hauteur en pixel), voici ma classe (enfin juste le début):
Je crée donc une instance de la classe avec la largeur et la hauteur de l'image et le tableau est vide, tout va bien. Ensuite j'utilise ma fonction pour lire le PGM:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 class Matrice{ private: unsigned int taille_x; //Width unsigned int taille_y; //Height unsigned int **tableau; //Matrix
Cette fonction prend le nom du fichier en paramètre, elle lit d'abord le magic number (p5 ou p3), puis les dimensions de l'image, ensuile la valeur max pour un pixel (255 niveau de gris) et enfin je lis le reste du fichier et je remplis le tableau avec les valeurs de gris:
Les dimensions, le magic number ainsi que la valeur max de gris marche bien mais il semblerait que la partie pour lire les pixels ne marche pas. Quand je veux afficher mon tableau il est vide et j'ai une erreur "Erreur de segmentation (core dumped)".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 void Matrice::lirePGM(std::string filename){ std::ifstream file(filename.c_str(), std::ios::binary); unsigned int w, h, g; char extension[2]; file >> extension; if(extension[0] == 'P' && (extension[1]=='5' || extension[1]=='3')) { skip_line(file); skip_comments(file); file>>w>>h; skip_line(file); skip_comments(file); file>>g; if(g!=255) std::cout << "Error grayscale" << std::endl; skip_line(file); skip_comments(file); } else{ w = h = 0; std::cerr << "Error PGM magic number" << std::endl; } file.read((char*)this->tableau, this->getY()*this->getX()); //Partie pour lire le reste du fichier et le stocker file.close(); }
Je précise que j'ai testé ma fonction d'affichage sur une autre matrice (avec des valeurs aléatoires dans la matrice), elle marche bien.
Voici un screen du début de mon fichier PGM:
https://i.gyazo.com/5d4291597cd1d024...28813c9db9.png
Du coup je vois pas ce qui ne marche pas, surement dans ma lecture
Partager