2011-03-19 1 views
0

En appliquant le code suivant pour convertir une image en niveaux de gris au seuil, mais la sortie serait une image noir total des idées:Un bug dans le code de traitement

PImage toThreshhold(PImage sourcePic) 
{ 
    PImage thresh = new PImage(sourcePic.width,sourcePic.height); 

    sourcePic.loadPixels(); 
    for(int i = 0; i < sourcePic.width; i++) 
    { 
     for(int j = 0; j<sourcePic.height; j++) 
     { 
      int pixPosition = i*sourcePic.width +j; 
      if(sourcePic.pixels[pixPosition] > 127) 
      { 
       sourcePic.pixels[pixPosition] = color(255); 
      } 
      else 
      { 
       sourcePic.pixels[pixPosition] = color(0); 
      } 
     } 
    } 
    sourcePic.updatePixels(); 

    return thresh; 
} 
+0

Vous devez spécifier la langue à l'aide d'une balise. En outre, j'ai souvent eu ce genre de problème général en oubliant de convertir de virgule flottante en entier ou vice-versa. –

+0

Quelle est la sortie que vous obtenez, et en quoi est-ce différent de ce que vous attendez? poster des captures d'écran. – misha

Répondre

0
int pixPosition = i*t.width +j; 

est erroné. Il doit être

int pixPosition = i*t.height +j; 

et vous ne modifiez pas tresh en aucune façon. Cela devrait être bon:

thresh = sourcePic; 
thresh.loadPixels(); 
for(int i = 0; i < t.width; i++) 
{ 
    for(int j = 0; j<t.height; j++) 
    { 
     int pixPosition = i*t.height +j; 
     if(thresh.pixels[pixPosition] > 127) 
     { 
      thresh.pixels[pixPosition] = color(255); 
     } 
     else 
     { 
      thresh.pixels[pixPosition] = color(0); 
     } 
    } 
} 
thresh.updatePixels(); 

return thresh; 
+0

il donne toujours le même résultat ,,,, image noire –

0

Quelle langue est-ce? C ou C++? Et que sont loadPixels() et updatePixels()?

Vous voulez probablement int pixPosition = j*sourcePic.width +i;

+0

son traitement ... une langue basée sur Java –