OpenCV unter Mac OS X
Vor einer Weile habe ich es geschafft, die „Open Computer Vision“-Bibliothek von Intel unter Mac OS X zu kompilieren. In diesem Artikel beschreibe ich, wie das funktioniert. Ich führe einige Voraussetzungen auf und erkläre dann, wie ihr die OpenCV kompilieren und installieren sowie ein Beispielprogramm ausführen könnt. Ich beschreibe Eigenheiten bei der Nutzung von OpenCV auf dem Mac, soweit ich auf welche gestoßen bin. Ich gehe bei der Beschreibung der Installation davon aus, dass ihr euch mit der Benutzung der Kommandozeile im Terminal
auskennt.
Ich freue mich über alle Rückmeldungen, Korrekturen oder Hilfegesuche. Schickt mir eine E-Mail, besonders wenn ihr eine Antwort erwartet, oder benutzt den Kommentar-Link unten rechts am Ende des Artikels.
Aktualisierungen
- 2006-02-02
- Erste deutschsprachige Fassung
Voraussetzungen
Auf meinem Mac läuft zurzeit Mac OS X „Tiger“ 10.4.4 mit XCode 2.2. Die Anweisungen gelten aber auch für Mac OS X „Panther“ mit XCode 1.5. Ich habe die X11-Version von Apple installiert (X11User.pkg
auf der Betriebssystem-CD/DVD) sowie das X11-SDK (X11SDK.pkg
, liegt XCode bei).
OpenCV benötigt einige Werkzeuge und Bibliotheken. Es ist das Einfachste, sie mit Hilfe von Fink zu installieren; jedenfalls benutze ich das (binäre Distribution, Version 0.7.2 unter Panther, 0.8.0 unter Tiger). Ihr müsst die folgenden Pakete installieren (deren Abhängigkeiten Fink automatisch handhabt):
- pkgconfig
- libjpeg
- libpng3
- libtiff
- gtk+2-dev
- glib2-dev
- pango1-xft2-dev
- atk1
Außerdem braucht ihr FFmpeg, das nicht in Fink enthalten ist (jedenfalls nicht in der stabilen Version). Ihr könnt entweder versuchen, die Version aus dem instabilen Zweig von Fink zu verwenden (habe ich nicht probiert), oder diese Anweisungen befolgen:
- Ladet den Quellcode der Version 0.4.9-pre1 von FFmpeg (1.5 MiB) herunter. Ich benutze diese Version, weil ich keine Zeit habe, der CVS-Version zu folgen, in der sich die API so verändern könnte, dass OpenCV nicht mehr funktioniert.
- Entpackt das Archive, wechselt auf der Kommandozeile zum Quellverzeichnis und wendet meinen kleinen Patch an (1 KiB, MD5-Prüfsumme:
41b2d644b9d82f38d3a75c88d9054e4b
bei der komprimierten Datei,4be5f172eefd5aa1945a2c35d3cda31f
bei der unkomprimierten Datei – ihr müsst die Datei eventuell selber entpacken, wenn der Browser das nicht schon tut):patch -p1 < /Pfad/zu/ffmpeg-0.4.9-pre1-macosx.patch
Ich habe diesen Patch auf Basis des Fink-Patches für 0.4.8 entwickelt; er ist aber weniger umfangreich. - Konfiguriert FFmpeg mit folgendem Befehl:
./configure --cc=gcc-3.3 --enable-shared --enable-pthreads --disable-vhook
- Kompiliert und installiert es (in
/usr/local
):make sudo make install
Dadurch erhaltet ihr eine FFmpeg-Version ohne optionale Fähigkeiten oder Codecs, aber bisher hat das für meine Zwecke ausgereicht.
Ich benutze übrigens keine Kamera und habe keine Ahnung, ob und wie man unter Mac OS X per OpenCV darauf zugreifen kann.
Installation
- Ladet den Linux-Quellcode von OpenCV 0.9.7 (10 MiB) herunter, entpackt ihn irgendwohin und wechselt auf der Kommandozeile ins Quellverzeichnis.
- Konfiguriert den Quellcode wie folgt:
./configure --with-apps CPPFLAGS="-I/sw/include -I/usr/include/malloc" LDFLAGS=-L/sw/lib CC=gcc-3.3 CXX=g++-3.3
- Kompiliert den Quellcode und installiert ihn in
/usr/local
:make sudo make install
- Wenn ihr die mitgelieferten Testprogramme laufen lassen wollt, kompiliert sie mit:
make check
Schnellstart
Um gleich loszulegen, kompiliert und startet ein Beispielprogramm im Terminal
:
- Kopiert die Dateien
morphology.c
undbaboon.jpg
vom Beispielverzeichnis in euer Heimatverzeichnis:cd ~ cp /usr/local/share/opencv/samples/c/{morphology.c,baboon.jpg} .
- Übersetzt den Quellcode:
g++ -bind_at_load `pkg-config --cflags opencv` morphology.c -o morphology `pkg-config --libs opencv`
- Startet X11, wechselt zurück zum
Terminal
, startet dann das Beispielprogramm und spielt damit:./morphology
- Lest zum Einstieg in die OpenCV-Programmierung die (englischsprachige) Dokumentation, angefangen mit der Datei
/usr/local/share/opencv/doc/index.htm
.
Eigenheiten
- Wenn ihr eure eigenen Projekte erstellt, dann verwendet die G++-Option
-bind_at_load
während des Linkvorgangs. Sonst bekommt ihr eine Linker-Warnung, und manche Sachen funktionieren eventuell nicht (vor allem die Persistenz-FunktionencvLoad
undcvSave
). In XCode müsst ihr diese Option in den Build Settings unter “Other Linker Flags” eintragen. - Unter Tiger solltet ihr wohl GCC 3.3 für eure Projekte verwenden. OpenCV lässt sich zwar mit GCC 4.0 übersetzen, FFmpeg 0.4.9-pre1 aber nicht, und ich weiß nicht, ob es eine gute Idee ist, Bibliotheken gemeinsam zu verwenden, die mit verschiedenen GCC-Versionen kompiliert wurden.
- Wenn ihr
cvtest
unter Tiger ausführen wollt, wechselt in das Verzeichnistests/cv/src/.libs
und startet das Programm dort.tests/cv/src/cvtest
ist ein vonlibtool
erzeugter Wrapper, der fälschlich die VariableDYLD_LIBRARY_PATH
setzt, was zu einem Konflikt zweier Bibliotheken führt, sodass sich der Test nicht starten lässt.
21:25, Permalink | 1 Kommentar | TrackBack-Info
Kommentare
Trackbacks are closed for this story.
Comments are closed for this story.
Thomas Hrabe
Ich mach für meine Uni was mit OpenCV und werd mal deine Anleitung für die Integration in meinen Mac versuchen. Danke schonmal im Vorraus!
Thomas
2006-03-02 11:38