image image


Worknote: OpenCV und Processing.py

OpenCV ist eine freie Programmbibliothek mit Algorithmen für die Bildverarbeitung und maschinelles Sehen. Sie ist für die Programmiersprachen C, C++, Python und Java geschrieben und steht als freie Software unter den Bedingungen der BSD-Lizenz. Das »CV« im Namen steht für englisch »Computer Vision«. Und nachdem ich mir kürzlich einige Videos angesehen hatte, in denen Daniel Shiffman Computer-Vision-Algorithmen in Processing (Java) per Fuß implementiert hatte, dachte ich mir, dies müßte doch auch einfacher gehen. Denn immerhin steht OpenCV als Bibliothek für Processing zur Verfügung und diese basiert auf der »offiziellen« OpenCV-Java-API.

image

Und wirklich, das Schwierigste an dem ganzen Unterfangen war die Installation der Bibliothek. Wie schon hier war das Repositorium für die Processing-Libraries wohl zu stark beansprucht und so bekam ich die Bibliothek erst nach mehrmaligen Versuchen, die jeweils mit einem Timeout abbrachen, heruntergeladen.

Der Rest war dann einfach: Ich habe mich an dieses Beispielprogramm in Processing (Java) von der GitHub-Seite des Projekts gehalten und es nach Python portiert. Das sah dann so aus:

add_library('opencv_processing')

contours = []

def setup():
    global jojosrc, jojodst, contours
    size(840, 420)
    jojosrc = loadImage("jojo2.jpg")
    opencv = OpenCV(this, jojosrc)
    
    opencv.gray()
    opencv.threshold(120)
    jojodst = opencv.getOutput()
    
    contours = opencv.findContours()
    print(contours.size())

def draw():
    global jojosrc, jojodst, contours
    image(jojosrc, 0, 0)
    image(jojodst, jojosrc.width, 0)
    
    noFill()
    strokeWeight(1)
    
    for contour in contours:
        stroke(0, 255, 0)
        contour.draw()
    
        stroke(255, 0, 0)
        point = PVector()
        beginShape()
        for point in contour.getPolygonApproximation().getPoints():
            vertex(point.x, point.y)
        endShape()

Das Programm konvertiert ein Farbphoto zu einem Schwarz-Weiß-Bild und zeigt, wo die Konturlinien liegen, nach denen OpenCV entscheidet, was schwarz und was weiß dargestellt wird. Ihr könnt (und sollt – vor allem, wenn Ihr ein anderes Photo verwendet) mit dem threshold-Wert herumspielen, damit Ihr seht, was da genau passiert.

Das von mir verwendete Photo (© 2012 by Stefanie Radon) hatte ich auf 420 x 420 Pixel zurechtgeschnitten. Wenn ihr ein anderes Photo mit einer anderen Größe verwendet, müßt Ihr natürlich die Größe des Ausgabefensters an dieses Photo anpassen.

Und weiter?

OpenCV ist eine sehr mächtige Bibliothek, die vor allem in der Echtzeit-Videoverarbeitung (zum Beispiel bei der Gesichtserkennung) Anwendung findet. Ich werde mich jetzt erst einmal durch die Dokumentation wühlen und herausfinden, was man damit sonst noch alles Nettes damit anstellen kann. Still digging!

[Update]: Ein nettes und verständliches OpenCV-Tutorial mit Python ist dieser Beitrag von Oliver Moser: »Einführung in Computer Vision mit OpenCV und Python«. Es wird mich sicher auf meinen weiteren Erkundungen begleiten.


1 (Email-) Kommentar


Mit OpenCV werde ich in den nächsten Monaten auch arbeiten. Bisher bin ich gerade dabei das Bildmaterial vorzubereiten, was noch ein wenig dauern wird. Mein Thema soll bei der Gesichtserkennung liegen, da ich das als ein wirklich spannendes (aber auch gefährliches) Thema betrachte. Bei OpenCV handelt es sich wirklich um eine sehr mächtige Bibliothek.

– Robert T. (Kommentieren) (#)


(Kommentieren) 

image image



Über …

Der Schockwellenreiter ist seit dem 24. April 2000 das Weblog digitale Kritzelheft von Jörg Kantel (Neuköllner, EDV-Leiter, Autor, Netzaktivist und Hundesportler — Reihenfolge rein zufällig). Hier steht, was mir gefällt. Wem es nicht gefällt, der braucht ja nicht mitzulesen. Wer aber mitliest, ist herzlich willkommen und eingeladen, mitzudiskutieren!

Alle eigenen Inhalte des Schockwellenreiters stehen unter einer Creative-Commons-Lizenz, jedoch können fremde Inhalte (speziell Videos, Photos und sonstige Bilder) unter einer anderen Lizenz stehen.

Der Besuch dieser Webseite wird aktuell von der Piwik Webanalyse erfaßt. Hier können Sie der Erfassung widersprechen.

Diese Seite verwendet keine Cookies. Warum auch? Was allerdings die iframes von Amazon, YouTube und Co. machen, entzieht sich meiner Kenntnis.


Werbung


Werbung


image  image  image
image  image  image


image