OpenCV selbst übersetzen
Um die aktuellste Version von OpenCV auf seinem Raspberry einzusetzen, muss man die Quellen selbst übersetzen. Wir zeigen, wie das in wenigen Schritten geht.
![Logo OpenCV: Drei angeschnittene Kreise in rot, grün und blau.](https://heise.cloudimg.io/width/610/q85.png-lossy-85.webp-lossy-85.foil1/_www-heise-de_/imgs/18/1/4/7/2/3/5/0/OpenCV_Logo-112f9c073b6b2073.jpeg)
- Daniel Bachfeld
Die Software-Pakete in den Repositories der meisten Linux-Distributionen hinken der Version der offiziell verfügbaren Version in der Regel um mehrere Releases hinterher. Bestes Beispiel ist OpenCV in der Version 2.4.1 auf dem Raspberry Pi. Offiziell steht bereits 2.4.11 zum Download bereit, das viele Verbesserungen und Bug-Fixes enthält.
Zudem dürfen die Distributoren nicht alle OpenCV-Module als fertige Binaries anbieten, weil einige davon patentgeschützt sind (nonfree packet). So sind beispielsweise die Funktionen für sogenanntes "Feature Tracking" nicht enthalten, mit man denen herausfinden kann, ob Objekte in Bildern gleich sind. Die Funktionen dürfen immerhin als Quellcode verbreitet und selbst übersetzt werden.
Wer sich traut, kann auch erste Experimente mit Version 3.0beta wagen. Die Version bringt zwar diverse Verbesserungen und insbesondere Unterstützung für Python3 mitbringt, allerdings funktioniert vieles noch nicht so richtig auf dem Raspberry Pi. Zudem haben sich in dieser Version die API-Aufrufe leicht verändert, was bislang aber nur sehr schlecht dokumentiert ist.
Im großen und ganzen ist das Übersetzen der Version 2.4.11 kein Hexenwerk. Damit alles gelingt und man später auch unter Python mit OpenCV arbeiten kann, muss man nur einige Vorbereitungen treffen. Dazu gehört insbesondere das Installieren einiger Bibliotheken: sudo apt-get install python-dev libgtk2.0-dev cmake-qt-gui python-opencv libjpeg8-dev
.
Anschließend lädt man das OpenCV-Archiv und entpackt es unter den Pfad /home/pi/Download (meist startet der Browser das Tool XArchive nach dem Download im Browser automatisch). Nach dem Entpacken wechselt man in der Shell in den Ordner opencv-2.4.11 und erzeugt mit mkdir build
den Ordner zum Erzeugen der Binaries. Anschließend wechselt man in das eben erzeugte Verzeichnis mit cd build
dorthin und startet das CMAKE-Konfigurationstool mit cmake-gui
.
Die Einstellungen nimmt man wie im Screenshot oben vor. Anschließend klickt man den "Configure"-Button. Im nun folgenden Drop-Down-Menü wählt man "Unix-Makefiles" aus und klickt "Finish". Der Tool cmake liest nun alle Konfigurationsoptionen ein und stellt sie im Fenster dar. Unter "WITH" deaktiviert man die Option "WITH_OPENCL". OpenCL/CUDA ist die Unterstützung des Systems durch die GPU, allerdings gibt es diese für den Pi noch nicht.
Das war es im ersten Schritt auch schon. Ein Klick auf "Generate" erzeugt den Makefile. Ist der Vorgang abgeschlossen, beendet man das Konfigurationstool und gibt in der Shell make -j4
ein. Der Übersetzungvorgang dauert rund 2 Stunden. Schneller ginge es auf einem Desktop-System und einer Cross-Compiling-Umgebung. Dafür sind jedoch zahlreiche Vorbereitungen zu treffen, die den Umfang dieses Artikels sprengen würden.
Ist der Übersetzungsvorgang erfolgreich durchgelaufen, installiert man die Bibliothek mit sudo make install
. Anschließend startet man den Python-Interpreter mit python
und gibt ein import cv2
. Dies sollte keine Fehlermeldung produzieren. Mit dem Befehl cv2.__version__
zeigt Python die Modulversion an, die nun 2.4.11 lauten sollte. Produziert der Befehl s=cv2.SIFT()
ebenfalls keinen Fehler, sind auch die "Nonfree"-Pakete verfügbar.
Mit quit()
verlässt man den Interpreter und stellt mit dem Befehl sudo ldconfig
sicher, dass auch wirklich alle neuen gebauten Module und Libs in das System eingebunden sind.
(dab)