Dieser Seminar-Blog befindet sich noch im Aufbau und wird in den kommenden Tagen entsprechend verfeinert.
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.
import gab.opencv.*;
2.OpenCV deklarieren
OpenCV opencv;
3.OpenCV initialisieren
opencv = new OpenCV(this, width, height);
4.Bild an OpenCV übergeben
opencv.loadImage(video);
5.OpenCV Funktionen ausführen
opencv.updateBackground();
Eine grosse Anzahl von Beispielen kommt mit der Library und es wird empfohlen sich diese einmal genauer anzusehen. In den folgenden Beispielen werden die vier wichtigsten Funktionen der Library vorgestellt.
setup()
nach der Initialisierung der Library mit dem Befehl opencv.startBackgroundSubtraction(5, 3, 0.5);
drei Parameter.
Im draw()
lesen wir zunächst unser Video-Bild ein und übergeben dieses dann an OpenCV opencv.loadImage(video);
. Mit dem Befehl opencv.updateBackground();
sagen wir OpenCV, dass der Hintergrund aktualisiert werden soll und nehmen die Funktionen opencv.dilate();
und opencv.erode();
um etwaige Löcher in der Erkennung zu schliessen. Schliesslich lassen wir uns alle gefundenen Konturen (Bewegung) darstellen
for (Contour contour : opencv.findContours())
{
contour.draw();
}
Alle Regionen, welche auf dem folgenden Bild in Rot dargestellt sind, haben sich in den letzten Frames verändert.
PVector loc = opencv.max();
welche uns direkt einen PVector mit den Koordinaten des hellsten Punktes zurückgibt.
In gleicher Weise können wir auch die Koordinaten des dunkelsten Punktes finden
PVector loc = opencv.min();
setup()
müssen wir OpenCV zunächst ein sog. Haar-Cascade übergeben. Dieses bestimmt, nach welchen Mustern (Gesicht, Mund, Nase, Körper, usw.) der Algorithmus suchen soll
opencv.loadCascade(OpenCV.CASCADE_FRONTALFACE);
Im draw()
gibt uns die Funktion
faces = opencv.detect();
dann ein Array vom Typ Rectangle zurück. Diese Rechtecke beschreiben die Bereiche im Bild, an welchen ein Gesicht erkannt wurde. Um die Rechtecke zu zeichnen iterieren wir durch das Array und stellen die Rechtecke dar.
for (int i = 0; i < faces.length; i++)
{
rect(faces[i].x, faces[i].y, faces[i].width, faces[i].height);
}
opencv.setROI(mouseX, mouseY, roiWidth, roiHeight);
Diese gibt einen rechteckigen Bereich an, welcher für OpenCV verwendet werden soll. Beispiel "P05_4_OpenCV_RegionOfInterest" gibt einen Überblick, wie diese Funktion genutzt werden kann.