Bonjour à tous,
J'ai réalisé il y a quelques mois le programme suivant, qui compile et s'éxécute très bien.
Le problème, c'est que je souhaiterai le réutiliser dans ma classe LPT de mon nouveau projet:
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 #include <iostream> #include "vigra/stdimage.hxx" #include "vigra/labelimage.hxx" #include "vigra/impex.hxx" #include "CImg.h" // Conversion d'une image CImg vers une image Vigra vigra::IImage conversionCImgVigra (cimg_library::CImg <unsigned short>& image) { // CODE} cimg_library::CImg <unsigned short> conversionVigraCImg (vigra::IImage temp) { //CODE } int main() { cimg_library::CImg <unsigned short> image ("lpt.bmp"); image.channel(0).display(); vigra::IImage src; vigra::IImage labels(image.dimx(), image.dimy()); // image labelisée (sortie) src = conversionCImgVigra(image); vigra::labelImageWithBackground(srcImageRange(src), destImage(labels), false, 0); cimg_library::CImg <unsigned short> image_display = conversionVigraCImg(labels); image_display.display("image labellisée"); return (0); }
lpt.h
J'ai des tonnes d'erreur dès que j'inclue ces en-têtes de malheur:
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 #include "CImg.h" #include <iostream> #include <string> #include "cfp.h" class LPT : public CFP { public: LPT(Choc & c, std::string nom_cfp); virtual ~LPT(); virtual void setImageReferenceIR(); virtual void setImageReferenceIR(cimg_library::CImg <unsigned short> ); void labellise(); protected: cimg_library::CImg<unsigned short> image_labellise; }; #endif
#include "vigra/stdimage.hxx"
#include "vigra/labelimage.hxx"
#include "vigra/impex.hxx"
C'est le même genre d'erreur que j'avais eu auparavant, ce qui me fait penser à des inclusions cycliques.
Le problème viendrait t-il des templates?
Comme dit dans la FAQ, j'ai recoder ce qui m'intéresse dans un .h:
outils.h
Et j'ai inclu l'en-tête en haut de lpt.cpp...
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 #ifndef OUTILS_H #define OUTILS_H #include <fstream> #include <string> #include "vigra/stdimage.hxx" #include "vigra/labelimage.hxx" #include "vigra/impex.hxx" #include "CImg.h" bool is_readable( const std::string & file ) { std::ifstream fichier( file.c_str() ); return fichier != 0; } // Conversion d'une image CImg vers une image Vigra vigra::IImage conversionCImgVigra (cimg_library::CImg <unsigned short>& image) { //CODE } cimg_library::CImg <unsigned short> conversionVigraCImg (vigra::IImage &temp) { //CODE } #endif
J'avoue avoir un peu du mal à m'y retrouver là dedans... Si quelqu'un pouvait éclairer ma lanterne, je lui en serais très reconnaissant!!!![]()
Partager