Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagejava
import processing.video.*;
Capture video;

Im In der setup() initialisieren  Funktion initialisieren wir die Library und starten die Aufnahme:

Code Block
languagejava
video = new Capture(this, width, height, 30);
video.start();

Im In der draw() fragen  Fuktion fragen wir ab, ob ein neuer Frame neues Bild vorhanden ist und lesen diesen dieses dann ein:

Code Block
languagejava
if (video.available()) {
  video.read();
}

...

Code Block
languagejava
image(video, 0, 0);

Folgend das komplette Processing-Sketch:

Code Block
titleBeispiel
collapsetrue
import processing.video.*;
Capture video;

void setup()  {
  size(640, 480);
  video = new Capture(this, width, height, 30);
  video.start();
}

void draw() {
  if (video.available()) {
    video.read();
  }
  
  image(video, 0, 0);
}

...

Grundsätzlich lassen sich alle Filter und Effekte, welche wir auf statische Bilder angewendet haben auch auf Video-Sourcen anwenden.

Pixelate

Das folgende Beispiel verwendet den den "Pixelate" filter um das Video grober aufzulösen:

Code Block
titleBeispiel
collapsetrue
import processing.video.*;
Capture video;

int pixelSize = 20;

void setup() {
  size(640, 480);
  video = new Capture(this, width, height, 30);
  video.start();
}

void draw() {
  if (video.available()) {
    video.read();
  }
  
  for(int x=0; x<width; x+=pixelSize) {
    for(int y=0; y<height; y+=pixelSize) {
      int loc = x+y*width;
      
      color c = video.pixels[loc];
      
      fill(c);
      noStroke();
      rect(x, y, pixelSize, pixelSize);
    }
  }
}


Processing_04_2

Threshold

Das folgende Beispiel arbeitet mit einem Grenzwert und zeigt die Pixel entweder Schwarz oder Weiss dar:

...

Je nach Anwendung kann es von Vorteil sein, wenn man das Bild spiegelt. Vor allem bei Interaktionen vor einem Bildschirm macht dies Sinn. Im Beispiel “P04_4_Video_Kamerabild_spiegeln” ist gezeigt wie es geht. Im Prinzip drehen wir das komplette Video horizontal um 180°. Dies machen wir mit:

Code Block
languagejava
pushMatrix();
scale(-1,1);
image(video, -width, 0);
popMatrix();
Code Block
titleBeispiel
collapsetrue
import processing.video.*;
Capture video;

void setup() {
  size(640, 480);
  video = new Capture(this, width, height, 30);
  video.start();
}

void draw() 
{
  if (video.available()) 
  {
    video.read();
  }
  
  pushMatrix();
  scale(-1,1);
  image(video, -width, 0);
  popMatrix();
}

...