Einfacher Kamerafarbfilter in Processing

Hinzugefügt am von Steffen Fiedler
Im folgenden Beispiel testen wir ob der Rot-Wert eines jeden Pixels über der Marke von 170 liegt. Ist es der Fall, wird es an seiner Position im Sketchfenster abgebildet. Mittels zweier ineinander verschachtelter for-Schleifen erreichen wir alle Bildpunkte der Kameraaufnahme. Nach der Farbselektion mit get(x, y) entscheidet die Bedingung if (red (c) > 170) {… ob der Pixel gezeichnet wird. Da wir mit point() arbeiten, wird die Einfärbung durch stroke() bestimmt.

Der Sketch

import processing.video.*;

// Variable für das Ansprechen 
// der Videokamera in P5
Capture videocam;

void setup () {
  size (320, 240);
  // Größe und Bildanzahl pro Sekunde für 
  // den Kamara-Input festlegen
  videocam = new Capture (this, width, height, 24);
}

void draw () {
  background (255);
  
  // wenn Kamera-Input verfügbar
  if (videocam.available ()) {
    // liest momentanes Kamerabild aus
    videocam.read ();
  }

  // für jeden Pixel in Breite des Sketches
  for (int i=0; i < width; i++) {
    // für jeden Pixel in der Höhe des Sketches
    for (int j=0; j < height; j++) {
      // lies den Farbwert für jeden Pixel aus
      color c = videocam.get (i, j);
      
      // wenn der Rotanteil groß genug ist
      // -> bilde das Pixel an seiner Position ab
      if (red (c) > 170) {
        stroke (c);
        point (i, j);
      }
    }
  }
}