import processing.core.*; import processing.video.*; import java.applet.*; import java.awt.*; import java.awt.image.*; import java.awt.event.*; import java.io.*; import java.net.*; import java.text.*; import java.util.*; import java.util.zip.*; public class _070427_capture_compare extends PApplet {/***
  Capture and Compare pixels
  RGB\u3092\u6bd4\u8f03\u3057\u3066\u5f71\u5316
  
  Compiler: Processing 0124 Beta
  Date: 2007/4/27
  Author: Sho Hashimoto
  WebSite: http://shokai.org
  ***/



int threshold = color(5, 5, 5); // RGB\u3067\u3057\u304d\u3044\u5024\u3092\u6307\u5b9a

Capture camera;
PImage bg;

public void setup(){
  size(640, 480);
  camera =  new Capture(this, width, height, 12);
  bg = new PImage(width, height);
}

public void draw(){
  loadPixels(); // pixels\u306b\u73fe\u5728\u306e\u8868\u793a\u3092\u8aad\u307f\u8fbc\u307f
  for(int i = 0; i < width*height; i++){
    int c = camera.pixels[i];
    int b = bg.pixels[i];
    if( abs(red(c) - red(b)) > red(threshold) &&
        abs(green(c) - green(b)) > green(threshold) &&
        abs(blue(c) - blue(b)) > blue(threshold) ){ // \u30d4\u30af\u30bb\u30eb\u306b\u8272\u306e\u5dee\u304c\u3042\u308b\u6642
      pixels[i] = color(0,0,0); // \u9ed2
    }
    else{
      pixels[i] = color(255,255,255); // \u767d
    }
  }
  updatePixels(); // pixels\u3092\u8868\u793a\u306b\u53cd\u6620\u3055\u305b\u308b
}

public void captureEvent(Capture camera){
  camera.read();
}

public void mousePressed(){
  println("Save BG");
  bg.copy(camera,0,0,width,height,0,0,width,height); // \u80cc\u666f\u3092\u4fdd\u5b58
}
static public void main(String args[]) {   PApplet.main(new String[] { "_070427_capture_compare" });}}