Bonjour,
Je suis étudiante et j'ai un projet à rendre sur le traitement d'image en langage C++ avec la librairie d'Opencv. (J'utilise Windows avec Dev-C++).
J'en suis à faire le seuillage. Mon code me semble correct mais mon ordinateur plante à chaque fois que j'essaye de l'éxécuter (pourtant pas de message d'erreur lors de la compilation...) Et je désespère ! Est-ce que c'est mon ordinateur qui arrive pas à suivre (manque de mémoire vive) ou bien est-ce que j'ai un problème de code ?? Si quelqu'un pouvait y jeter un oeil je lui en serais vraiment reconnaissante !!!

Mon code : (J'ai bien mis les "include" au début):
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
39
40
41
42
43
44
45
46
47
48
49
 
/*Fonction qui affecte une couleur BW au pixel (i,j) de l'image img*/
 
void put_color_BW(IplImage** img, int i, int j, int C){
  CvPoint pt = {i,j};
  ((uchar*)((*img)->imageData + (*img)->widthStep*pt.y))[pt.x]=C;
}
 
/*Fonction qui recupere la couleur BW du pixel (i,j) de l'image img*/
void get_color_BW(IplImage* img, int i, int j, int *C){
  CvPoint pt = {i,j};
  *C=((uchar*)(img->imageData + img->widthStep*pt.y))[pt.x];
}
 
int main(){
  IplImage *img, *img_deux=0;
  int height,width,step,channels,depth, i,j,c;
  uchar *data, ;
 
  img = cvLoadImage ("fruits_gris.jpg",0);
 
  height    = img->height;
  width     = img->width;
  step      = img->widthStep;
  channels  = img->nChannels;
  depth     = img->depth;
  data      = (uchar *)img->imageData; 
 
 img_deux = cvCreateImage(cvSize(width,height),8,1);
 
 int seuil =60;
 
      for (i=0;i<=600;i++){
	for (j=0;j<=600;j++) {
             get_color_BW(img, i, j, &c);
             if (c>seuil){
                 put_color_BW(&img_deux, i, j,0);}
            else{
                  put_color_BW(&img_deux, i, j,1);}
	  }
}
  cvNamedWindow("Image seuil",1);
  cvShowImage("Image seuil",img_deux);
  //cvSaveImage("Seuil.jpg", img_deux);
  cvWaitKey(0);
  cvReleaseImage(&img);
  cvReleaseImage(&img_deux);
  return 0;                    
}