如何在处理范围之外调用变量的范围

时间:2017-09-15 00:17:27

标签: processing

我一直在处理一个处理程序,它比较两个图像并给出百分比匹配。我这样做是通过使用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();
  }
}

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

1 个答案:

答案 0 :(得分:0)

您可以在for循环之后使用它,因为您已将其创建为全局变量。但是你的f1和f2变量只会在每个图像中存储 last 像素。如果您需要逐个像素地进行比较,那么您的图像无论如何都需要具有相同的像素数?因此,只需在for循环中进行比较,而不是循环遍历整个第一个图像,然后循环整个第二个图像,它会更快地运行并实际执行您想要的操作。