====== Bildverarbeitung mit OpenCV in Processing ====== ===== OpenCV: Eine quelloffene, Bibliothek zur professionellen Bildverarbeitung ===== OpenCV ("Computer Vision") ist eine Sammlung von Algorithmen und Datenstrukturen zur Bildverarbeitung- Erkennung- und Interpretation, zu der die internationale akademischen und industriellen Bildverarbeitungscommunity ständig neue Teile beträgt. Viele der enthaltenen Verfahren sind auf dem neusten Stand der Forschung, andere obskur, und die meisten leider nur äußerst spartanisch dokumentiert. ===== Die "OpenCV"-Bibiothek für Processing ===== Unter dem gleichen Namen wie das Original bietet Greg Borenstein einen Wrapper ("Verpackung") der "echten" OpenCV-Library für Processing an. Dieser bietet insbesondere eine kinderleichte Installation und direkt lauffähige Beispielprogramme. Zusätzlich bietet die Bibliothek eine "opencv" Klasse (die Verwirrung hört nie auf), in der der Autor alles, was er für nützlich hält, zu einem großen Klumpen zusammenschnürt, der leichter benutzbar sein soll als die schicken beliebig kombinierbaren Module des Originals (dem objektorientierten Programmierer dreht sich hier der Magen um...). Die Originalmodule lassen sich aber trotzdem nutzen. ==== Installation ==== Zur Installation müsst ihr einfach in Processing im Menü **//Sketch/Library Importieren/Library hinzufügen//** auswählen und die Library "**//OpenCV//**" suchen. Wenn ihr Daten aus einer Kamera verwendet wollt, müsst ihr zusätzlich noch die Library "Video" installieren. (geht genauso). ===== Dokumentation und Informationsquellen ===== === Nützliches Beispiel: "LiveCamTest" === Schaut euch als nächstes vielleicht mal das Beispiel "ContributedLibraries/OpenCV/LiveCamTest" an - dort wird die eingebaute Kamera eures Laptops verwendet, um Gesichter zu erkennen und zu markieren. Wenn ihr nichts anderes vor habt könnt ihr meist schon fast genau den Code aus den Beispielen verwenden. === Brauchbare Tutorials, nur leider für C++ === gibt es hier... [[http://docs.opencv.org/3.1.0/d9/df8/tutorial_root.html]] === Ein Überblick über alle im Processing-Wrapper implementierten Funktionen: JavaDoc === Hier findet ihr einen (leider ziemlich unübersichtlichen) Überblick über den verkorksten Wrapper: [[http://atduskgreg.github.io/opencv-processing/reference/]] Eine (noch viel kargere) Auflistung aller in Funktionen der "Original" OpenCV-Library in Java gibt es hier: [[http://docs.opencv.org/java/3.0.0/]] === Unersetzlich für ein tieferes Verständnis: Ein Blick in den Quellcode === Unter [[https://github.com/atduskgreg/opencv-processing/blob/master/src/gab/opencv/OpenCV.java]] könnt ihr euch anschauen, wie Greg Borenstein die Original-OpenCV-Funktionalitäten benutzt, um seine eigene multifunktionale "OpenCV"-Klasse zu bauen. Weil seine Funktionen schon laufen, ist das oft ein guter Startpunkt. Um das zu finden, was euch interessiert, sucht einfach den Namen der entsprechenden Funktion (also z.B. "detect").