2017-09-15 63 views
0

我一直在研究处理中的一个程序,该程序比较两个图像并给出百分比匹配。我通过使用for循环为图像中的每个像素调用get()来做到这一点。我必须找到一种方法来调用一个在循环之外的for循环中初始化的变量。我浏览过几个网站,似乎无法给我任何好的答案,而且我想知道这是否有可能,如果没有,是否有办法解决它。这里是我的代码:如何调用它之外的变量的范围正在处理中

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(); 
    } 
} 

我试图调用为()循环外部变量f1,因为for()循环初始化。提前致谢!

+0

我不确定你在问什么。 'f1'变量在草图的顶部定义,所以你可以在任何你想要的地方使用它。还要注意,'f1'变量只会“保留”你给它的最后一个值。 –

+0

哦。谢谢。我会尝试的。 –

+0

...你在想什么? –

回答

0

您可以在for循环之后使用它,因为您已将其创建为全局变量。但是你的f1和f2变量只会在每个图像中存储最后的像素。如果您需要逐个像素进行比较,您的图像无论如何都需要具有相同的像素数量?因此,只需在for循环中进行比较,而不是循环整个第一个图像,然后循环整个第二个图像,它会运行得更快,实际上按照我的想法做你想做的事情。