Bonjour à tous,
Je me heurte à un problème d'ouverture de fichier jpg sans avoir pu trouver une réponse sur la faq ni sur la toile, j'ai pourtant respecté les conseils donnés mais en vain. J'ai crée une classe Frame qui contiendra les données relatives à une image . Comme je suis encore débutant il y a surement des maladresses dans la rédaction du code.
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
26
27
28
29
30
31
32
33
34
35
36
37
38 #ifndef _Frame_h_ #define _Frame_h_ #include <iostream> #include <fstream> #include <string> #include <vector> using namespace std; class Frame { public: // Constructor Frame(); Frame(string filename,int lignes, int colonnes); // Destructor ~Frame() { } // Getter const float get_pixel(int i) const; private: // Attributs string namefile; vector<float> frame; int nb_lignes; int nb_colonnes; //Load image void load_image(const string& filename, int lignes, int colonnes); }; #endif
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
26
27
28
29
30
31
32
33
34 #include "Frame.h" Frame::Frame() : namefile(), frame(), nb_lignes(0), nb_colonnes(0) { } Frame::Frame(string filename,int lignes, int colonnes) : namefile(filename), nb_lignes(lignes), nb_colonnes(colonnes) { load_image(namefile,nb_lignes,nb_colonnes); } void Frame::load_image(const string& filename, int lignes, int colonnes) { ifstream is; int length=lignes*colonnes; is.open(filename,ios::binary|ios_base::in); unsigned char *image = new unsigned char[length]; is.read((char*)image,length); for (int i=0;i<length;i++){ frame.push_back((float)image[i]); if (i<10) cout <<(float)image[i] << endl; } delete[] image; is.close(); } //Getter const float Frame::get_pixel(int i) const{ return frame[i]; }L'image est bien chargé, cependant la valeur de chaque niveau de gris est constante sur tout le vecteur et vaut 205. Quelqu'un pourrait-il m'éclairer là dessus ? L'image en question est celle-ci : http://digital.cs.usu.edu/~mjiang/cs...g2008/Lena.jpg
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #include "Frame.h" const int nombre_ligne=512; const int nombre_col=512; int main(){ string file_name="Lena.jpg"; Frame temp(file_name,nombre_ligne,nombre_col); for (int i=0;i<1000;i++) cout << temp.get_pixel(10000+i) << endl; }
Partager