Installation und Nutzung von OpenCV unter macOS Sierra mit Homebrew und XCode

Die Programmbibliothek OpenCV lässt sich kostenfrei unter http://opencv.org bzw. direkt unter http://opencv.org/downloads.html beziehen. Beschrieben ist die Installation von OpenCV für Betriebssysteme wie Microsoft Windows oder Linux unter http://docs.opencv.org/2.4/doc/tutorials/introduction/table_of_content_introduction/table_of_content_introduction.html. Vorkompilierte Binaries stehen für MS Windows unter http://sourceforge.net/projects/opencvlibrary/files/opencv-win zur Verfügung; unter macOS Sierra und Linux müssen jene Binaries zuerst – z.B. unter Verwendung von CMake – kompiliert werden. Eine äußerst komfortable Alternative zum Selbstkompilieren der Binaries bietet der Paketmanager „Homebrew“, der die Installation und Nutzung von OpenCV stark vereinfacht.

Um OpenCV unter macOS Sierra zu installieren, wird zuerst Homebrew von http://brew.sh/ heruntergeladen und installiert. Anschließend wird OpenCV mit den folgenden Anweisungen heruntergeladen und eingerichtet:

brew tap homebrew/science
brew install opencv

Detaillierte Informationen zu elaborierten Installationsmöglichkeiten lassen sich vor der Installation von OpenCV mit der Anweisung

brew info opencv

abrufen.

Eine erste OpenCV-Anwendung mit XCode 8

Ist OpenCV erfolgreich installiert, lässt sich eine erste Anwendung mit XCode erstellen, in der ein Bild geladen und in einem separaten Fenster angezeigt wird.

Zuerst wird in XCode – kostenfrei verfügbar im AppStore – ein neues Projekt erstellt („Command Line Tool“):

xcode-command-line-tool

Im folgenden Dialog wird ein Name für die Konsolenanwendung vergeben, z.B. „xcode-projectnameBildanzeige mit OpenCV“:

Anschließend wird das Projektverzeichnis erstellt und ausgewählt. Im nächsten Schritt wird unter „File“ > „Project Settings“ der Pfad zur compilierten Anwendung geändert (entweder mit „Project-relative Location“ oder „Custom Location“):

xcode-projectdirectory

Um OpenCV mit dem frisch erstellten XCode-Projekt zu verknüpfen, müssen die folgenden Pfadangaben zu den Header- und kompilierten Bibliotheksdateien von OpenCV vorgenommen werden (vgl. auch http://charliegerard.github.io/blog/Installing-OpenCV/):

  • Unter „Build Settings“ nach „search paths“ suchen
  • „Always Search User Paths“ auf „Yes“ setzen
  • „Header Search Paths“ ändern in „/usr/local/include“
  • „Library Search Paths“ verändern in „/usr/local/lib“

xcode-headers-libs-config

Suchstring „search paths“ durch „linking“ ersetzen. In den Linker-Optionen unter „Other Linker Flags“ werden nun die folgenden Bibliotheken angegeben:

-lopencv_calib3d -lopencv_core -lopencv_features2d -lopencv_flann -lopencv_highgui -lopencv_imgproc -lopencv_ml -lopencv_objdetect -lopencv_photo -lopencv_stitching -lopencv_superres -lopencv_ts -lopencv_video -lopencv_videostab

XCode ist nun mit OpenCV verknüpft, so dass sich mit dem folgenden Beispielcode eine Rastergraphik mit OpenCV laden und darstellen lässt:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main(int argc, char** argv) {

    if (argc != 2) {
        cout << "Bitte zu ladendes Bild als Parameter angeben." << endl;
        return -1;
    }
    
    Mat image;
    image = imread(argv[1], CV_LOAD_IMAGE_COLOR);
    
    if (!image.data) {
        cout <<  "Bild " << argv[1] << " wurde nicht gefunden." << std::endl ;
        return -1;
    }
    
    namedWindow("OpenCV Window", WINDOW_AUTOSIZE);
    imshow("OpenCV Window", image);
    
    cout << "Image width: " << image.cols << ", image height: " << image.rows << endl;
    
    waitKey(0);
    
    return 0;
}

6 Kommentare on "Installation und Nutzung von OpenCV unter macOS Sierra mit Homebrew und XCode"


  1. Hallo.

    Hat zufällig noch jemand der Mac-User das Problem, dass Xcode den folgenden Fehler ausspuckt:

    Showing Recent Errors Only
    clang: error: linker command failed with exit code 1 (use -v to see invocation)

    Außerdem sagt es mir, dass -lopencv_videoio nicht gefunden wurde, obwohl die genau wie die Anderen in der Beschreibung eingetragen habe.

    Hat da irgendjemand eine Erklärung oder Lösung für?

    Danke im voraus.

    Marco

    Antworten

  2. Hi!

    Ich nehme an, dass die OpenCV-Bibliotheken nicht vollständig installiert sind. Was liefert denn ein

    ls /usr/local/lib | grep "libopencv"

    zurück?

    Antworten

    1. Laut Terminal fehlt mir tatsächlich genau diese.

      Kann ich die noch nachträglich einführen oder muss ich Open-CV komplett deinstallieren?

      Antworten

      1. Es könnte helfen, OpenCV mit

        brew uninstall opencv

        zu deinstallieren und anschließend mit

        brew install opencv

        erneut zu installieren.

        Zeigt

        brew doctor

        Probleme an?

        Antworten

        1. Nein, nur Warnungen.
          Allerdings habe ich es erneut nachvollzogen und festgestellt, dass die -lopencv_videoio wieder nicht installiert wurde.

          Antworten

          1. Argh, entschuldige, mein Fehler: Die libopencv_videoio resultierte aus meinen Experimenten mit OpenCV (auf die unstimmigen Bibliotheken wies mich auch „brew doctor“ hin…). Ohne „-lopencv_videoio“, „lopencv_imgcodecs“ und „-lopencv_shape“ müsste es problemlos funktionieren, die oben wiedergegebene Anwendung zu kompilieren.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.