Programmierung in Python und OpenCV

Programmierung in Python und OpenCV

Hier ist ein kleines Einführungstutorial in die Benutzung von Python und OpenCV. Ich empfehle Python Vers. 2.6 und OpenCV 2.1 in Kombination zu verwenden, die ich als sehr zuverlässig und stabil im Zusammenspiel erlebt habe.
Installation:

  1. Python 2.6 downloaden und installieren

  2. OpenCV 2.1 downloaden und installieren, dabei bei der Installation angeben dass der Pfad von OpenCV2.1\bin in die Windows-Pfad-Variable PATH übernommen wird. Neustart von Windows ist danach notwendig

  3. Nach dem Neustart des Windows-Systems die Dateien cv.lib und cv.pyd von C:\OpenCV2.1\Python2.6\Lib\site-packages in das site-packages-Verzeichnis der Python 2.6-Installation kopieren, also in der Regel nach C:\Python26\Lib\site-packages

Python hat meines Erachtens zu Unrecht den einfachen Ruf einer Skriptsprache, die für Grafikanwendungen ungeeignet sei. Gerade in Verbindung mit den starken Python-Bibliotheken und Modulen, die in C++ geschrieben sind, wird die Brillianz und Einfachheit von Python als vollwertige Programmiersprache auch für Grafikanwendungen sehr deutlich.
Sehen wir uns ein einfaches Grafikprogramm für das Einladen von Grafiken an:


#!/usr/bin/python
# -*- coding: utf-8 -*-

import cv

image = cv.LoadImage("Images/Python_OpenCV.jpg")
cv.NamedWindow("PyOpenCV", 1)
cv.ShowImage("PyOpenCV", image)
c = cv.WaitKey(0)
cv.DestroyWindow("PyOpenCV")

Das Programm importiert die Grafik-Bibliothek opencv und lädt dann das Bild in "Images/Python_OpenCV.jpg" relativ zum Programmstandort ein. Sodann eröffnet es ein Fenster mit dem Label "PyOpenCV" und zeigt das in der Variablen image gespeicherte Bild mittels ShowImage an. In der nächsten Zeile wartet das Programm auf einen beliebigen Tastendruck und setzt dann zum Programmende fort, um das eröffnete Fenster wieder zu löschen und sich dann selbst zu beenden.

Programmierung in Python und OpenCV Teil 2

Aber was wäre eine Grafikbibliothek ohne Grafiktransformationen? Ein weiteres kleines Beispielprogramm in Python/OpenCV verdeutlicht die Stärken der OpenCV-Bibliothek:


#!/usr/bin/python
# -*- coding: utf-8 -*-

import cv

quelle = cv.LoadImage("Images/apple.JPG")

threshold = 120
maxValue = 255

colorThresh = cv.CloneImage(quelle)
grau = cv.CreateImage( (quelle.width, quelle.height), cv.IPL_DEPTH_8U, 1 );
cv.CvtColor(quelle, grau, cv.CV_BGR2GRAY)
grauThresh = cv.CloneImage(grau)
cv.NamedWindow("Quelle", 1)
cv.ShowImage("Quelle", quelle)
cv.NamedWindow("Grau", 1)
cv.ShowImage("Grau", grau)
cv.Threshold(quelle, colorThresh, threshold, maxValue, cv.CV_THRESH_BINARY)
cv.Threshold(grau, grauThresh, threshold, maxValue, cv.CV_THRESH_BINARY)
cv.NamedWindow("colorThresh", 1)
cv.ShowImage("colorThresh", colorThresh)
cv.NamedWindow("grauThresh", 1); 
cv.ShowImage("grauThresh", grauThresh)
cv.WaitKey(0)
cv.DestroyWindow("Quelle")
cv.DestroyWindow("colorThresh")
cv.DestroyWindow("Grau")
cv.DestroyWindow("grauThresh")

Das Programm lädt das Bild eines Apfels und speichert dieses in der Quelldatei quelle. Es setzt nun die Parameter threshold (= Schwelle) und maxValue. Mittels der Funktion cv.CloneImage wird eine genaue Kopie des Apfelbilds erstellt, um dieses später zu modifizieren. In der darauffolgenden Zeile erstellen wir ein Graubild, welches genau die gleiche Größe wie unsere Quellbild quelle hat. Wenn wir statt 1 die Zahl 3 in der Funktion cv.CreateImage angeben würden, so wäre es kein Graubild sondern ein Farbbild. Dieses Graubild ist aber zunächst noch leer und enthält keine Daten. Mit der Funktion cv.CvtColor und dem Parameter cv.CV_BGR2GRAY wandeln wir dann unser farbiges Quellbild in ein schwarz-weisses Graubild um und speichern es in der Variablen grau. In den nächsten Zeilen erstellen wir für diese beiden Bilder Anzeigefenster (cv.NamedWindow) und zeigen diese auch an (cv.ShowImage). Die Funktion cv.Treshold nimmt das Eingangsbild quelle und untersucht bei jedem Pixel, ob der Wert den Schwellenwert, der in threshold gespeichert ist, überschreitet oder nicht. Wenn ja, wird der Pixel dann auf maxValue gesetzt und so in die Bildvariable colorThresh geschrieben. Es ergibt sich daraus eine Art Comic-Art-Bild. Dies wird ebenfalls für das Graubild durchgeführt, so dass wir hier ein Bild enthalten was nur schwarze oder weisse Pixel, aber keine grauen Bildpunkte enthält. Wieder werden beide Bilder danach dargestellt und dann nach Tastendruck die Bilder gelöscht und das Programm beendet.

Programmierung in Python und OpenCV Teil 3

So wie jeder Mensch seine Ecken und Kanten hat, so haben auch Bilder welche. Ein weiteres kleines Beispielprogramm in Python/OpenCV findet die Ecken und Kanten im Bild:


#!/usr/bin/python
# -*- coding: utf-8 -*-

import cv

quelle = cv.LoadImage("Images/pear.png")
grau = cv.CreateImage( (quelle.width, quelle.height), cv.IPL_DEPTH_8U, 1 );
cv.CvtColor(quelle, grau, cv.CV_BGR2GRAY)
cannyImg = cv.CreateImage((quelle.width, quelle.height), cv.IPL_DEPTH_8U, 1)
cv.Canny(grau, cannyImg, 50, 150, 3)
cv.NamedWindow("quelle", 1)
cv.NamedWindow("canny",1)
cv.ShowImage("quelle", quelle)
cv.ShowImage("canny", cannyImg)
cv.WaitKey(0)
cv.DestroyWindow("quelle")
cv.DestroyWindow("canny")

Das Programm lädt das Bild einer Birne und speichert dieses in der Quelldatei quelle. In der darauffolgenden Zeile erstellen wir ein Graubild, welches genau die gleiche Größe wie unsere Quellbild quelle hat. Dieses Graubild ist aber zunächst noch wie im vorherigen Beispiel leer und enthält keine Daten. Mit der Funktion cv.CvtColor und dem Parameter cv.CV_BGR2GRAY wandeln wir dann unser farbiges Quellbild in ein schwarz-weisses Graubild um und speichern es in der Variablen grau. Wir erstellen abermals ein noch leeres Graubild und in der nächsten Zeile ermitteln wir mittels der Funktion cv.Canny die Ecken und Kanten im grauen Quellbild und speichern diese in der Zieldatei cannyImg ab, indem der sogenannten Canny-Algorithmus verwendet wird. Die Werte 50 und 150 sind Schwellenwerte für den Algorithmus, während der dritte Wert 3 der Wert für den Sobel Operator darstellt. Das Ausgangsbild als auch das Ergebnis wird dann mittels cv.NamedWindows und cv.ShowImage dargestellt und nach Tastendruck beendet sich das Programm.

Webseite durchsuchen:
Akademie online
Akademiezeitschrift
Alchemie
Anastasia
Archiv
Astrologie
Astromedizin
Astromedizinisches Computerprogramm Petosiris
Aurafotografie
Blog
Email-Newsletter
Feng Shui
Grenzwissenschaftliche und naturheilkundliche Bücher
Homöopathie
Horoskop
HP-Kurs zur Vorbereitung der HP-Prüfung
Impressum
Kräutertreff Leipzig
Materia Medica der Essenzen
Medizinisch-Astrologisches Repertorium
Mondkalender
Neuigkeiten
Online Shop
Programmierung und Python
TCM und Akupunktur
Webtips

Weitere Informationen wenn Sie sich per Email an uns wenden.
(C) Andreas Bunkahle
Diese Website wird ständig verändert.
IMPRESSUM 


 
Sitemap Neuigkeiten Suchen
Diskussionforum Aktuelle Meldungen Site-Seeing-Tour