我一直在处理一个处理程序,它比较两个图像并给出百分比匹配。我这样做是通过使用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()循环初始化它。提前谢谢!
答案 0 :(得分:0)
您可以在for循环之后使用它,因为您已将其创建为全局变量。但是你的f1和f2变量只会在每个图像中存储 last 像素。如果您需要逐个像素地进行比较,那么您的图像无论如何都需要具有相同的像素数?因此,只需在for循环中进行比较,而不是循环遍历整个第一个图像,然后循环整个第二个图像,它会更快地运行并实际执行您想要的操作。