Kamerabild verzerren in Processing

Hinzugefügt am von Jonas Loh
Jegliches Auslesen und Modifizieren von Bildinformationen kann wie im Kapitel Bilder auch auf Einzelbilder von Videos angewendet werden. Zur Demonstration verzerrt dieses Beispiel ein Videobild in der Vertikalen (siehe Bilder Scratch).
Im draw() testet eine Bedingung mit videocam.available() ob bereits eine neue Aufnahme der angeschlossenen Kamera zum Abrufen bereit steht und liest diese mit read() ein. Teil zwei besteht aus einer for-Schleife die von 0 bis 319 (Sketchbreite - 1) läuft. Mittels dieser Zählvariable können die Farbwerte der ersten Pixelreihe des Kamerabildes ausgelesen werden. Nach der Selektion des Farbwertes wird eine Linie von der Oberkante zur Unterkante der Zeichenfläche für jeden Pixel in der angesprochenen Reihe gezeichnet. Die Strichfarbe kommt vom ausgelesenen Pixel im Kamerabild. Im Gegensatz zum vorigen Beispiel wird das eigentliche Kamerabild nicht abgebildet.

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 () {
  // 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++) {
    // lies den Farbwert für jeden Pixel in
    // der obersten Spalte des Kamerabildes 
    // aus (von links nach rechts).
    color c = videocam.get (i, 0);
    // nutze den Farbwert für die Strichfarbe
    stroke (c);
    // Zeichne eine vertikale Linie für jeden 
    // Pixel von oben nach unten
    line (i, 0, i, height);
  }
}