OpenCV 3.0 Python Guide

Einführung und Überblick

Dieses Dokument enthält Anweisungen zur Installation und Migration auf die neueste Version von OpenCV (Version 3) und die Python-Bindungen. Zusätzlich zu einigen API-Änderungen gibt es auch Änderungen an der Python-Schnittstelle (z.B. Entfernung von cv2.cv), die möglicherweise Änderungen im bestehenden Code erfordern, um mit der neuen Version des cv2-Moduls zu arbeiten. Nach der Installation finden Sie auf der nächsten Seite, Migration & Änderungen, Details zu den Änderungen am Modul und Hilfe bei der Migration von bestehendem Python-Code auf die neue Version.

Diese Seite behandelt die Installation von OpenCV 3 unter Windows (mit vorgefertigten Binärdateien) und Linux (aus dem Quellcode kompiliert), einschließlich der Python-Schnittstelle (das cv2 Modul). OpenCV kann von der offiziellen OpenCV-Website heruntergeladen werden. Beachten Sie, dass diese Anleitung auf der Grundlage von OpenCV Version 3.1.0 geschrieben wurde. Nach der Installation wird empfohlen, die von Python verwendete Version von OpenCV zu überprüfen:

import cv2print cv2.__version__# Should print 3.0.0-rc1 or newer.

Beachten Sie, dass OpenCV 3 zwar die neueste Version ist, das Modul aber immer noch den Namen cv2 trägt.

Installation unter Windows (vorgefertigte Binärdateien)

Die Verwendung vorgefertigter Binärdateien ist der schnellste Weg, eine Python OpenCV-Umgebung unter Windows zum Laufen zu bringen. Derzeit ist nur die Python 2-Version des cv2-Moduls gebaut und in der neuesten Windows-Version enthalten. Die Unterstützung für Python 3 (sowie das Hinzufügen anderer nicht standardisierter Funktionen/Module) erfordert das Kompilieren aus dem Quellcode – siehe die offizielle OpenCV-Dokumentation für Details.

Herunterladen von OpenCV und Python

Um zu beginnen, laden Sie OpenCV für Windows (Version 3.1, opencv-3.1.0.exe) herunter und entpacken Sie es in ein Verzeichnis Ihrer Wahl. Das Windows-Build enthält sowohl ein 32-Bit- als auch ein 64-Bit-Modul für Python 2.7.

Bevor Sie fortfahren, stellen Sie sicher, dass Sie eine funktionierende Python 2.7-Installation haben, die Sie von der Python-Website herunterladen können. Diese Anleitung wurde mit Python 2.7.9 (x86 Installer / x64 Installer) getestet. Bei der Installation wird empfohlen, dass Sie dem Installationsprogramm erlauben, Python zu Ihrer PATH Umgebungsvariablen hinzuzufügen, damit Sie python und pip von einer Eingabeaufforderung aus ausführen können.

Modulabhängigkeiten installieren

Das Python OpenCV cv2 Modul benötigt sowohl den NumPy als auch den SciPy Stack. Um dies zu erhalten, stellen Sie zunächst sicher, dass Sie eine funktionierende python-Umgebung haben und pip installiert ist (wenn nicht, verwenden Sie die Links oben und stellen Sie sicher, dass der Python-Ordner in Ihrer PATH-Variable ist).

Christoph Gohlke bietet derzeit einige (inoffizielle) vorgefertigte Python-Pakete für Windows an, einschließlich NumPy und SciPy. Laden Sie die neuesten stabilen Versionen von NumPy und SciPy herunter und installieren Sie sie, indem Sie pip install .whl von einer Eingabeaufforderung aus aufrufen. Beachten Sie, dass Sie die Version herunterladen sollten, die Ihrer Python-Umgebung (in diesem Fall 2.7) und Ihrer Wortlänge entspricht. Zum Beispiel auf 32-Bit-Systemen/Interpretern:

pip install numpy-1.9.2+mkl-cp27-none-win32.whlpip install scipy-0.15.1-cp27-none-win32.whl

Und für 64-Bit-Systeme/Interpreter:

pip install numpy-1.9.2+mkl-cp27-none-win_amd64.whlpip install scipy-0.15.1-cp27-none-win_amd64.whl

Nach der Installation sollten Sie in der Lage sein, import numpy und import scipy über einen Python-Interpreter auszuführen, um zu überprüfen, ob die Module korrekt installiert wurden. Sie können überprüfen, welche Versionen von NumPy und SciPy unter numpy.__version__ bzw. scipy.__version__ installiert sind.

Installation des Python-OpenCV-Moduls

Zuletzt müssen wir noch das OpenCV-Modul in die lokalen Python-Pakete kopieren. Gehen Sie in den aus opencv-3.0.0-rc1.exe extrahierten Dateien in den Ordner opencv\build\python.7\ und öffnen Sie entweder den Ordner x86\ (für 32-bit) oder x64\ (für 64-bit). In beiden Ordnern befindet sich eine Datei cv2.pyd.

Kopieren Sie cv2.pyd direkt in das Verzeichnis Lib\site-packages\ Ihrer Python-Installation. Für die meisten Benutzer befindet sich dieses Verzeichnis unter:

C:\Python27\Lib\site-packages 

Stellen Sie schließlich sicher, dass sich die OpenCV .dll-Dateien irgendwo im %PATH% Ihres Systems befinden, insbesondere die opencv_ffmpeg310.dll (oder opencv_ffmpeg310_64.dll für 64-Bit-Systeme) Datei, die zum Laden von Videodateien benötigt wird.

Fahren Sie mit dem Abschnitt Überprüfen der Installation fort, um sicherzustellen, dass alles korrekt installiert wurde und die neue Version von OpenCV verwendet wird. Schauen Sie sich auch die nächste Seite, Migration & Änderungen, an, um Details über die Änderungen am Modul und die Aktualisierung des bestehenden Codes zu erfahren.

Installation unter Linux (Kompilieren aus dem Quellcode)

Obwohl diese Anleitung für Ubuntu 12.04/14.04 und andere Varianten (z.B. Xubuntu/Lubuntu/Kubuntu) geschrieben wurde, sollte der Prozess auf anderen Versionen sowie ähnlichen Debian-ähnlichen Linux-Distributionen weitgehend gleich sein. Achten Sie auf die Ausgabe jedes Befehls, um sicherzustellen, dass alles korrekt funktioniert hat, und wenn es Probleme während des Erstellungsprozesses gibt, finden Sie am Ende dieses Dokuments mögliche Abhilfemaßnahmen

OpenCV herunterladen

Um zu beginnen, laden Sie OpenCV für Linux (Version 3.1.0, opencv-3.1.0.zip) herunter und entpacken Sie es in ein Verzeichnis Ihrer Wahl (z.B. ~/opencv-src). Erstellen Sie einen build-Ordner innerhalb des Ordners, in den das Archiv entpackt wurde (das Verzeichnis, das die CMakeLists.txt-Datei enthält), und öffnen Sie dort eine Terminalsitzung. Zum Beispiel:

# Assuming the files were extracted to ~/opencv-src/...cd ~/opencv-srcmkdir buildcd build

Führen Sie alle folgenden Befehle aus dem Unterordner build selbst aus, so dass die kompilierten Dateien dort abgelegt werden.

Installation von Build-Abhängigkeiten

Um OpenCV zu kompilieren, müssen wir sicherstellen, dass die erforderlichen Abhängigkeiten verfügbar sind, einschließlich der Build-Tools selbst. Unter Ubuntu können wir die benötigten Pakete mit apt abrufen, aber zuerst müssen wir sicherstellen, dass die Paketliste aktuell ist, indem wir apt-get update ausführen. Führen Sie dann die folgenden Befehle aus, um die erforderlichen Pakete zu erhalten (siehe unten für eine einzeilige Liste aller Pakete):

sudo apt-get install cmake build-essential pkg-configsudo apt-get install libgtk2.0-dev libtbb-devsudo apt-get install python-dev python-numpy python-scipysudo apt-get install libjasper-dev libjpeg-dev libpng-dev libtiff-dev sudo apt-get install libavcodec-dev libavutil-dev libavformat-dev libswscale-devsudo apt-get install libdc1394-22-dev libv4l-dev

In einer Zeile:

sudo apt-get install cmake build-essential pkg-config libgtk2.0-dev libtbb-dev python-dev python-numpy python-scipy libjasper-dev libjpeg-dev libpng-dev libtiff-dev libavcodec-dev libavutil-dev libavformat-dev libswscale-dev libdc1394-22-dev libv4l-dev

Beachten Sie, dass Sie für zusätzliche OpenCV-Module/Funktionen (z. B. GPU/CUDA-Unterstützung oder Python 3-Modul) auch die entsprechenden Entwicklungs-/SDK-Pakete für diese Bibliotheken herunterladen müssen. Die oben aufgelisteten Abhängigkeiten decken nur die Erstellung von OpenCV selbst und das Python 2.7 cv2 Modul ab.

Kompilieren und Installieren von OpenCV

Nun, da wir die benötigten Abhängigkeiten haben, führen Sie cmake aus (wieder im build/ Verzeichnis, das wir erstellt haben), um das Makefile zu generieren, um OpenCV zu erstellen:

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

Wenn es irgendwelche Fehler gibt, stellen Sie sicher, dass Sie alle benötigten Pakete heruntergeladen haben – die Ausgabe sollte helfen, herauszufinden, was fehlt. Um sicherzustellen, dass das Python-Modul gebaut wird, sollten Sie python2 in der Liste der konfigurierten Module sehen, nachdem Sie cmake ausgeführt haben:

-- Linker flags (Release):-- Linker flags (Debug):-- Precompiled headers: YES---- OpenCV modules:-- To be built: hal core flann imgproc ml python2

Wenn Sie das Modul python2 nicht in der Liste “Zu bauen” sehen, überprüfen Sie, ob Sie die richtigen Python-Entwicklungspakete installiert haben, entfernen Sie alle Dateien aus dem Ordner build/ und versuchen Sie erneut, den Befehl cmake auszuführen.

Jetzt können wir OpenCV (und das Python-Modul) mit make bauen und auf unserem System installieren:

makesudo make install

Stellen Sie sicher, dass der Bau nach dem Aufruf von make erfolgreich war, und überprüfen Sie die Ausgabe vor der Installation. Wenn Sie auf Build-Probleme/Fehler stoßen, stellen Sie erneut sicher, dass Sie alle erforderlichen Abhängigkeiten und Header-Dateien auf Ihrem System haben. Wenn es tatsächlich Build-Probleme mit OpenCV selbst gibt, lesen Sie den Abschnitt Linux Build Issues weiter unten für einige mögliche Workarounds.

Bei der Installation von OpenCV 3.0-rc1 auf Ubuntu 12.04 stieß ich auf Build-Fehler bezüglich einiger fehlender Codec #define-Einträge. Wie bereits erwähnt, sind die Schritte, um dies zu tun, unten beschrieben, falls Sie auf das gleiche Problem stoßen sollten (das Problem sollte in Version 3.1.0 und höher gelöst sein). Ubuntu 14.04 und höher sollte erfolgreich bauen, ohne dass irgendwelche Änderungen erforderlich sind.

Wenn der Bau erfolgreich war, aber Sie können nicht import cv2 von einer Python-Shell nach dem Ausführen von make install, können Sie das Modul manuell installieren, indem Sie die cv2.so-Datei, die wir gerade im Ordner build/lib/ gebaut haben, nach /usr/local/lib/python2.7/dist-packages/ kopieren. Vom Ordner build/ aus können Sie dies wie folgt tun:

sudo cp lib/cv2.so /usr/local/lib/python2.7/dist-packages/

Nach diesem Schritt ist das Modul cv2 installiert und kann nun von Ihrer Python-Umgebung importiert werden. Fahren Sie mit dem Abschnitt Überprüfen der Installation fort, um sicherzustellen, dass alles korrekt installiert wurde und – was noch wichtiger ist – dass die richtige Version von OpenCV von Python verwendet wird. Auf der nächsten Seite, Migration & Änderungen, finden Sie Einzelheiten zu den Änderungen am Modul cv2 und zu den Änderungen, die am bestehenden Code vorgenommen werden müssen, damit er mit dem aktualisierten Modul funktioniert.

Überprüfen der Installation

Wie bereits erwähnt, können Sie überprüfen, ob das Modul cv2 korrekt installiert wurde, indem Sie Folgendes in einer Python-Shell ausführen:

import cv2print cv2.__version__

Wenn die korrekte Versionszeichenkette ausgegeben wird (3.0.0-rc1 oder neuer, wenn Sie eine neuere Version verwendet haben), ist zu diesem Zeitpunkt alles korrekt installiert!

Bitte beachten Sie, dass es einige größere Änderungen an der cv2-Modulhierarchie selbst gibt, und dass Python-Programme, die mit Blick auf OpenCV 2.4.x geschrieben wurden, möglicherweise nicht mehr richtig funktionieren. Siehe den nächsten Abschnitt, Migration & Änderungen für Details über die Änderungen und wie man Programme modifiziert, um mit den Änderungen umzugehen.

Linux Build Issues

Auf einigen Systemen kann man auf Probleme stoßen, wenn man OpenCV selbst kompiliert, abhängig davon, welche Pakete verfügbar sind. Wenn die richtigen Headerdateien verfügbar sind, aber trotzdem Probleme beim Kompilieren auftreten, versuchen Sie zu sehen, ob es unten irgendwelche Workarounds für das Problem gibt.

Undefinierte AV_CODEC_ID_... in ffmpeg_codecs.hpp

Wenn Sie auf ein Problem stoßen, bei dem Kompilierfehler dadurch verursacht werden, dass bestimmte Codecs nicht definiert sind, können Sie eine aktuellere Version von ffmpeg_codecs.hpp von hier herunterladen und sie im Quellcode, den Sie heruntergeladen/extrahiert haben, im Ordner modules/videoio/src/ ersetzen.

Alternativ können Sie sie auch manuell deklarieren, indem Sie die ffmpeg_codecs.hpp-Datei selbst bearbeiten, indem Sie den fehlenden Codec-Eintrag für H263I hinzufügen und WNV in WNV1 umbenennen. Sie können sehen, welche Änderungen vorgenommen werden müssen, indem Sie sich diesen Commit aus dem OpenCV GitHub-Projekt ansehen.

Nachdem die Datei aktualisiert wurde, können Sie make erneut aus dem Ordner build/ aufrufen, und OpenCV sollte die Kompilierung jetzt ohne Fehler beenden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.