Willkommen auf unserem Seminar-Blog

Immer auf dem aktuellen Stand bleiben

Dieser Seminar-Blog befindet sich noch im Aufbau und wird in den kommenden Tagen entsprechend verfeinert.

Member Login

Lost your password?

Registration is closed

Sorry, you are not allowed to register by yourself on this site!

You must either be invited by one of our team member or request an invitation by email at viad.info {at} zhdk {dot} ch.

Processing 04

Processing 04

In diesem Tutorial werden wir uns ansehen, wie wir mit einem Live-Bild arbeiten können. Glücklicherweise haben die neuesten Notebook-Computer eigebaute Web-Kameras und wir können deren Informationen direkt verwenden.

Kamerabild auslesen

In einem ersten Schritt wollen wir das Kamerabild auslesen und auf der Zeichenfläche darstellen. Dazu verwenden wir die Video Libary, welche schon n der Standart-Installation von Processing enthalten ist. Um die Kamera auszulesen importieren wir die Libary und deklarieren einen Namen import processing.video.*; Capture video; Im setup() initialisieren wir die Library und starten die Aufnahme video = new Capture(this, width, height, 30); video.start(); Im draw() fragen wir ab, ob ein neuer Frame vorhanden ist und lesen diesen dann ein if (video.available()) { video.read(); } Zum Schluss zeichnen wir das Bild auf die Zeichenfläche image(video, 0, 0); Processing_04_1

Filter und Video

Grundsätzlich lassen sich alle Filter und Effekte, welche wir auf statische Bilder angewendet haben auch auf Video-Sourcen anwenden. Im folgenden ein Paar Beispiele. Das Beispiel "P04_2_Video_Kamerabild_Pixelate" verwendet den gleichen Filter wie im Beispiel "P03_7_Pixels_Pixelate" und löst das Bild gröber auf. Processing_04_2 Beispiel "P04_3_Video_Kamerabild_Threshold" arbeitet wieder mit einem Grenzwert und zeigt die Pixel entweder Schwarz oder Weiss dar (vrgl. Beispiel "P03_9_Pixels_Threshold"). Processing_04_3

Weitere Filter

Für Bilder gibt es auch schon eine Menge von vorgefertigten Filtern. Diese können unter diesem LINK gefunden werden.

Spiegeln?

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 pushMatrix(); scale(-1,1); image(video, -width, 0); popMatrix();

Background Subtraction

Wollen wir beispielsweise Bewegung auf einem Bild erkennen, so ist es hilfreich eine Art "Green-Screen" zu haben, welcher dann nur die Bereiche zeichnet, welche sich verändern. Dies erreichen wir mit einem sog. Background-Removal oder Background-Substraction. Dazu vergleichen wir ein statisches Referenzbild mit einem Live-Bewegtbild. Wenn die Differenz zwischen beiden Bildern (und damit die Differenz der Farbwerte an der Selben Stelle) grösser ist als ein bestimmter Schwellenwert, können wir davon ausgehen, dass an diesem Punkt Bewegung stattfindet. Leider muss man als Abstrich sagen, dass die automatische Helligkeitskorrektur der iSight Kamera sich schlecht für diese Methode auswirkt. Processing_04_4

Hellster Punkt?

Für die direkte Steuerung eines Interfaces kann es hilfreich sein, zu wissen, wo sich der hellste Punkt in einem Bild befindet. Das Beispiel "P04_6_Video_Kamerabild_Hellster_Punkt" zeigt wie es geht. Dazu wird ein PVector erstellt und eine Variable, welche den jeweils hellsten Wert für das aktuelle Frame beinhaltet. Durch das Vergleichen der Helligkeitswerte im ganzen Frame kann sehr schnell der Hellste Punkt bestimmt werden. Processing_04_5

Farbtracking

Processing_04_6

Weiteres:

- Video - Referenz auf processing.org