2017-09-15 1 views
0

J'ai travaillé sur un programme en traitement qui compare deux images et me donne le pourcentage de correspondance. Je fais cela en utilisant une boucle for qui appelle un get() pour chaque pixel de l'image. Je dois trouver un moyen d'appeler une variable qui est initialisée à l'intérieur des boucles for en dehors des boucles. J'ai parcouru plusieurs sites Web qui ne semblent pas me donner de bonnes réponses, et je me demandais si c'était possible, et sinon, s'il y avait un moyen de contourner le problème. Voici mon code:Comment appeler une variable en dehors de sa portée

PImage fce1; 
PImage fce2; 

color f1; 
color f2; 

void setup(){ 
    fullScreen(); 
    background(#353535); 
    fce1 = loadImage("Face1.jpg"); 
    fce2 = loadImage("Face2.jpg.png"); 
} 

void draw(){ 
    image(fce1, width/2 - 500, 200, 350, 500); 
    image(fce2, width/2 + 150, 200, 350, 500); 



    //line(width/2 - 150, height/2 - 250, width/2 + 150, height/2 - 250); 
    for(int i = height/2 - 250; i <= fce1.height + (height/2 - 250); i ++){ 
    for(int x = width/2 - 500; x <= fce1.width + (width/2 - 500); x ++){ 
     color vm1 = fce1.get(x, i); 
     this.f1 = vm1; 

    } 
    } 
    for(int i = height/2 - 250; i <= fce2.height + (height/2 - 250); i ++){ 
    for(int x = width/2 + 150; x <= fce2.width + (width/2 + 150); x ++){ 
     color vm2 = fce2.get(x, i); 
     this.f2 = vm2; 
    } 
    } 


} 


void mousePressed(){ 
    if(mouseX >= 20 && mouseX <= 70 && mouseY >= 20 && mouseY <=70){ 
    exit(); 
    } 
} 

Je suis en train d'appeler la variable f1 en dehors de la boucle for(), puisque la boucle for() initialise. Merci d'avance!

+0

Je ne suis pas sûr de ce que vous demandez. La variable 'f1' est définie en haut de votre croquis, vous pouvez donc l'utiliser où vous voulez. Notez également que la variable 'f1' ne conservera que la dernière valeur que vous lui donnez. –

+0

Oh. Merci alors. Je vais essayer ça. –

+0

... qu'est-ce que vous essayez? –

Répondre

0

Vous pouvez simplement l'utiliser après la boucle for puisque vous l'avez créée en tant que variable globale. Mais vos variables f1 et f2 vont juste stocker le dernier pixel dans chaque image. Si vous avez besoin de comparer pixel par pixel, vos images devront avoir le même nombre de pixels, n'est-ce pas? Il suffit donc de faire les comparaisons dans votre boucle for, au lieu de faire défiler toute la première image puis toute la seconde, ça va courir plus vite et faire ce que vous voulez, je pense.