web-dev-qa-db-de.com

Erste Schritte mit OpenCV 2.4 und MinGW unter Windows 7

Wie installiere ich OpenCV 2.4 und kompiliere meinen Code mit MinGW?

34
flowfree

1. OpenCV 2.4.3 installieren

Holen Sie sich zunächst OpenCV 2.4. von sourceforge.net. Es ist eine selbstextrahierende Datei, also doppelklicken Sie einfach auf die Datei, um die Installation zu starten. Installieren Sie es in einem Verzeichnis, sagen Sie C:\.

OpenCV self-extracting

Warten Sie, bis alle Dateien extrahiert wurden. Es wird ein neues Verzeichnis C:\opencv erstellt, das OpenCV-Header-Dateien, Bibliotheken, Codebeispiele usw. enthält.

Nun müssen Sie C:\opencv\build\x86\mingw\bin Verzeichnis zu Ihrem Systempfad hinzufügen. Dieses Verzeichnis enthält OpenCV-DLLs, die zum Ausführen Ihres Codes erforderlich sind.

Öffnen Sie die Systemsteuerung System Erweiterte Systemeinstellungen Registerkarte Erweitert Umgebungsvariablen ...

Sie sehen ein Fenster wie das folgende:

Add OpenCV DLL directory to system path

Im Abschnitt Systemvariablen
wähle Pfad (1), klicke Bearbeiten ... (2), addiere C:\opencv\build\x86\mingw\bin (3) und klicke dann auf Ok .

Damit ist die Installation von OpenCV 2.4.3 auf Ihrem Computer abgeschlossen.


2. MinGW Compiler Suite installieren

Ich empfehle Ihnen dringend, gcc (GNU Compiler Collection) zum Kompilieren Ihres Codes zu verwenden. gcc ist die Compiler-Suite, die in Linux-Systemen weit verbreitet ist, und MinGW ist der native Port für Windows.

Laden Sie das MinGW-Installationsprogramm von Sourceforge.net herunter und doppelklicken Sie, um die Installation zu starten. Folgen Sie einfach dem Assistenten und wählen Sie das zu installierende Verzeichnis aus, sagen Sie C:\MinGW.

Select directory in MinGW installation

Wählen Sie "C Compiler" und "C++ Compiler" für die Installation.

Select components to be installed

Das Installationsprogramm lädt einige Pakete aus dem Internet herunter, sodass Sie eine Weile warten müssen. Fügen Sie nach Abschluss der Installation C:\MinGW\bin zu Ihrem Systempfad hinzu, indem Sie die zuvor beschriebenen Schritte ausführen.

Add MinGW bin directory to system path

Um zu testen, ob Ihre MinGW-Installation erfolgreich ist, öffnen Sie ein Befehlszeilenfeld und geben Sie Folgendes ein: gcc. Wenn alles in Ordnung ist, wird diese Meldung angezeigt:

gcc: fatal error: no input files
compilation terminated

Damit ist die MinGW-Installation abgeschlossen. Jetzt ist die Zeit gekommen, Ihr "Hallo, Welt!" Programm.


3. Schreiben Sie einen Beispielcode

Öffnen Sie Ihren Texteditor und geben Sie den folgenden Code ein und speichern Sie die Datei unter loadimg.cpp.

#include "opencv2/highgui/highgui.hpp"
#include <iostream>

using namespace cv;
using namespace std;

int main(int argc, char** argv)
{
  Mat im = imread(argc == 2 ? argv[1] : "lena.jpg", 1);
  if (im.empty())
  {
    cout << "Cannot open image!" << endl;
    return -1;
  }

  imshow("image", im);
  waitKey(0);

  return 0;
}

Legen Sie lena.jpg Oder ein beliebiges Bild in dasselbe Verzeichnis wie die obige Datei. Öffnen Sie ein Befehlszeilenfeld und kompilieren Sie den obigen Code, indem Sie Folgendes eingeben:

g++ -I"C:\opencv\build\include" -L"C:\opencv\build\x86\mingw\lib" loadimg.cpp -lopencv_core243 -lopencv_highgui243 -o loadimg

Bei erfolgreicher Kompilierung wird eine ausführbare Datei mit dem Namen loadimg.exe Erstellt.

Art:

loadimg

Das Programm ausführen. Ergebnis:

The result of your first OpenCV program


4. Wohin soll es von hier aus gehen?

Was kommt als nächstes, wenn Ihre OpenCV-Umgebung fertig ist?

  1. Gehe zum Beispielverzeichnis → C:\opencv\samples\cpp.
  2. Lesen und kompilieren Sie Code.
  3. Schreiben Sie Ihren eigenen Code.
61
flowfree

Die Anweisungen in der Antwort von @bsdnoobz sind zwar hilfreich, haben OpenCV aber nicht dazu gebracht, auf meinem System zu funktionieren.

Anscheinend musste ich die Bibliothek selbst kompilieren, um sie zum Laufen zu bringen, und mich nicht auf die vorgefertigten Binärdateien verlassen (was zu einem Absturz meiner Programme führte, wahrscheinlich aufgrund von Inkompatibilität mit meinem System).

Ich brachte es zum Laufen und schrieb eine umfassende Anleitung für Kompilieren und Installieren von OpenCV und Konfigurieren von Netbeans für die Arbeit damit.

Der Vollständigkeit halber wird im Folgenden auch darauf hingewiesen.


Als ich OpenCV zum ersten Mal verwendete, hatte ich zwei Hauptschwierigkeiten:

  1. Meine Programme NICHT sofort zum Absturz bringen.
  2. Netbeans zum Nizza-Spielen bringen und vor allem den Debugger zum Laufen bringen.

Ich habe viele Tutorials und Anleitungen gelesen, aber keine war wirklich umfassend und gründlich. Schließlich gelang es mir, die Umgebung einzurichten; Und nach einer Weile, in der ich diese (großartige) Bibliothek benutzt habe, habe ich beschlossen, dieses kleine Tutorial zu schreiben, das hoffentlich anderen helfen wird.

Das Tutorial besteht aus drei Teilen:

  1. OpenCV kompilieren und installieren.
  2. Netbeans konfigurieren.
  3. Ein Beispielprogramm.

Die von mir verwendete Umgebung ist : Windows 7, OpenCV 2.4.0, Netbeans 7 und MinGW 3.20 (mit Compiler gcc 4.6.2).

Annahmen : Sie haben bereits MinGW und Netbeans auf Ihrem System installiert.

OpenCV kompilieren und installieren

Beim Herunterladen von OpenCV enthält das Archiv bereits vorgefertigte Binärdateien (kompilierte Bibliotheken und DLLs) im Ordner "build". Zuerst habe ich versucht, diese Binärdateien zu verwenden, vorausgesetzt, jemand hat bereits die Arbeit des Kompilierens für mich erledigt. Das hat nicht geklappt.

Irgendwann dachte ich, ich muss die gesamte Bibliothek auf meinem eigenen System kompilieren, damit sie richtig funktioniert.

Glücklicherweise ist der Kompilierungsprozess dank CMake recht einfach. CMake (steht für Cross-Platform Make) ist ein Tool, das Makefiles speziell für Ihren Compiler und Ihre Plattform generiert. Wir werden CMake verwenden, um unsere Gebäude- und Kompilierungseinstellungen zu konfigurieren, ein 'Makefile' zu generieren und dann die Bibliothek zu kompilieren.

Die Schritte sind:

  1. Laden Sie CMake herunter und installieren Sie es (wählen Sie im Installationsassistenten, CMake zum Systempfad hinzuzufügen).
  2. Laden Sie die 'Release'-Version von OpenCV herunter.
  3. Extrahieren Sie das Archiv in ein Verzeichnis Ihrer Wahl. Ich werde c:/opencv/ Verwenden.
  4. Starten Sie CMake GUI.
    1. Suchen Sie nach dem Quellverzeichnis c:/opencv/.
    2. Wählen Sie aus, wo die Binärdateien erstellt werden sollen. Ich habe c:/opencv/release Gewählt.
      CMake Configuration - 1
    3. Klicken Sie auf "Konfigurieren". Wählen Sie in dem sich öffnenden Bildschirm den Generator entsprechend Ihrem Compiler. In unserem Fall handelt es sich um 'MinGW Makefiles'.
      CMake Configuration - 2
    4. Warten Sie, bis alles geladen ist. Anschließend wird der folgende Bildschirm angezeigt:
      CMake Configuration - 3
    5. Ändern Sie die Einstellungen, wenn Sie möchten, oder übernehmen Sie die Standardeinstellungen. Wenn Sie fertig sind, klicken Sie erneut auf "Konfigurieren". Im Protokollfenster sollte "Konfiguration abgeschlossen" angezeigt werden, und der rote Hintergrund sollte aus allen Zellen verschwinden.
      CMake Configuration - 4
    6. Zu diesem Zeitpunkt ist CMake bereit, das Makefile zu generieren, mit dem wir OpenCV mit unserem Compiler kompilieren werden. Klicken Sie auf "Generieren" und warten Sie, bis das Makefile generiert wurde. Wenn der Vorgang abgeschlossen ist, sollte "Generieren abgeschlossen" angezeigt werden. Ab diesem Zeitpunkt brauchen wir CMake nicht mehr.
  5. Öffnen Sie die MinGW-Shell (Die folgenden Schritte können auch über die Windows-Eingabeaufforderung ausgeführt werden).
    1. Geben Sie das Verzeichnis c:/opencv/release/ Ein.
    2. Geben Sie mingw32-make Ein und drücken Sie die Eingabetaste. Dies sollte den Kompilierungsprozess starten.
      MinGW Make
      MinGW Make - Compilation
    3. Nach Abschluss der Kompilierung können die OpenCV-Binärdateien verwendet werden.
    4. Der Einfachheit halber sollten wir das Verzeichnis C:/opencv/release/bin Zum Systempfad hinzufügen. Dadurch wird sichergestellt, dass unsere Programme die benötigten DLLs zum Ausführen finden.

Netbeans konfigurieren

Netbeans sollte mitgeteilt werden, wo sich die Header-Dateien und die kompilierten Bibliotheken befinden (die im vorherigen Abschnitt erstellt wurden).

Die Header-Dateien werden aus zwei Gründen benötigt: zum Kompilieren und zur Code-Vervollständigung. Die kompilierten Bibliotheken werden für die Verlinkung benötigt.

Hinweis: Damit das Debuggen funktioniert, sollten die OpenCV-DLLs verfügbar sein. Aus diesem Grund haben wir das Verzeichnis, in dem sie enthalten sind, zum System-PATH hinzugefügt (vorheriger Abschnitt, Schritt 5.4).

Stellen Sie zunächst sicher, dass Netbeans für die Zusammenarbeit mit MinGW ordnungsgemäß konfiguriert ist. Bitte sehen Sie sich den Screenshot unten an und vergewissern Sie sich, dass Ihre Einstellungen korrekt sind (unter Berücksichtigung der Pfadänderungen gemäß Ihrer eigenen Installation). Beachten Sie auch , dass der Befehl make aus msys stammen sollte und nicht von Cygwin.

Netbeans MinGW Configuration

Als nächstes müssen Sie für jedes neue Projekt, das Sie in Netbeans erstellen, den Include-Pfad (das Verzeichnis, das die Header-Dateien enthält), den Bibliothekspfad und die spezifischen Bibliotheken definieren, die Sie verwenden möchten. Klicken Sie mit der rechten Maustaste auf den Projektnamen im Bereich "Projekte" und wählen Sie "Eigenschaften". Fügen Sie den Include-Pfad hinzu (ändern Sie den Pfad entsprechend Ihrer eigenen Installation):

Netbeans Project Include Path

Fügen Sie den Bibliothekspfad hinzu:

Netbeans Libraries Path

Fügen Sie die spezifischen Bibliotheken hinzu, die Sie verwenden möchten. Diese Bibliotheken werden in der Verknüpfungsphase dynamisch mit Ihrem Programm verknüpft. Normalerweise benötigen Sie die Bibliothek core sowie alle anderen Bibliotheken entsprechend den spezifischen Anforderungen Ihres Programms.

Netbeans Include Libraries

Jetzt können Sie OpenCV nutzen!

Zusammenfassung

Hier sind die allgemeinen Schritte, die Sie ausführen müssen, um OpenCV zu installieren und mit Netbeans zu verwenden:

  1. Kompilieren Sie OpenCV mit Ihrem Compiler.
  2. Fügen Sie das Verzeichnis mit den DLLs zu Ihrem Systempfad hinzu (in unserem Fall: c:/opencv/release/bin).
  3. Fügen Sie das Verzeichnis mit den Header-Dateien zum Include-Pfad Ihres Projekts hinzu (in unserem Fall: c:/opencv/build/include).
  4. Fügen Sie das Verzeichnis mit den kompilierten Bibliotheken zum Bibliothekspfad Ihres Projekts hinzu (in unserem Fall: c:/opencv/release/lib).
  5. Fügen Sie die spezifischen Bibliotheken hinzu, die mit Ihrem Projekt verknüpft werden sollen (Beispiel: libopencv_core240.dll.a).

Beispiel - "Hallo Welt" mit OpenCV

Hier ist ein kleines Beispielprogramm, das den Text "Hello World:)" in einem GUI-Fenster zeichnet. Sie können damit überprüfen, ob Ihre Installation korrekt funktioniert. Nach dem Kompilieren und Ausführen des Programms sollte das folgende Fenster angezeigt werden:

OpenCV Hello World

#include "opencv2/opencv.hpp"
#include "opencv2/highgui/highgui.hpp"

using namespace cv;

int main(int argc, char** argv) {
    //create a gui window:
    namedWindow("Output",1);

    //initialize a 120X350 matrix of black pixels:
    Mat output = Mat::zeros( 120, 350, CV_8UC3 );

    //write text on the matrix:
    putText(output,
            "Hello World :)",
            cvPoint(15,70),
            FONT_HERSHEY_PLAIN,
            3,
            cvScalar(0,255,0),
            4);

    //display the image:
    imshow("Output", output);

    //wait for the user to press any key:
    waitKey(0);

    return 0;
}
17
EyalAr

Das funktioniert bei mir nicht. Ich habe ein paar Tage damit verbracht, jedem einzelnen Tutorial zu folgen, das ich im Netz gefunden habe, und schließlich habe ich meine eigenen Binärdateien kompiliert. Alles ist hier beschrieben: OpenVC 2.4.5, Eclipse CDT Juno, MinGW-Fehler 0xc0000005

Nach vielen Versuchen und Fehlern habe ich mich entschlossen, dem this Tutorial zu folgen und meine eigenen Binärdateien zu kompilieren, da sich anscheinend zu viele Leute darüber beschweren, dass vorkompilierte Binärdateien NICHT für sie funktionieren. Eclipse CDT Juno wurde bereits installiert.

Mein Verfahren war wie folgt:

  1. Laden Sie MinGW herunter, installieren Sie es und fügen Sie es mit c:/mingw/bin zum Systempfad hinzu
  2. Laden Sie cmake von http://www.cmake.org herunter und installieren Sie es
  3. Laden Sie die Windows-Version von OpenCV2.4.5 herunter
  4. Installiere/entpacke Opencv nach C:\OpenCV245PC\(README, index.rst und CMakeLists.txt sind mit allen Unterordnern vorhanden)
  5. Führen Sie dann das CMake-GUI-Tool aus
  6. Wählen Sie C:\OpenCV245PC\als Quelle
  7. Wählen Sie das Ziel C:\OpenCV245MinGW\x86 aus, in dem die Binärdateien erstellt werden sollen
  8. Klicken Sie auf die Schaltfläche "Konfigurieren" und wählen Sie "MinGW-Makefiles" als Generator aus. Das Fenster enthält einige rote Markierungen. Wählen Sie die gewünschten Optionen aus.
  9. Drücken Sie erneut die Schaltfläche Konfigurieren . Die Konfiguration ist nun abgeschlossen.
  10. Klicken Sie auf die Schaltfläche Generieren.
  11. Beenden Sie das Programm, wenn die Generierung abgeschlossen ist.
  12. Beenden Sie das Cmake-Programm.
  13. Führen Sie den Befehlszeilenmodus (cmd.exe) aus und wechseln Sie in das Zielverzeichnis C:\OpenCV245MinGW\x86
  14. Tippe "mingw32-make". Sie werden sehen, wie Binärdateien erstellt werden. Wird der Befehl nicht gefunden, müssen Sie sicherstellen, dass der Systempfad mit c:/mingw/bin hinzugefügt wird. Der Build wird gemäß den ausgewählten Optionen bis zum Abschluss fortgesetzt.
  15. Fügen Sie im Windows-System PATH (Arbeitsplatz> Rechte Maustaste> Eigenschaften> Erweitert> Umgebungsvariablen> Pfad) das Bin-Verzeichnis des Ziels C:\OpenCV245MinGW\x86\bin hinzu
  16. STARTE DEN COMPUTER NEU
  17. Wechseln Sie zur Eclipse CDT-IDE, und erstellen Sie ein C++ - Programm mit dem OpenCV-Beispielcode (Sie können Code aus dem oberen Teil dieses Themas verwenden).
  18. Gehen Sie zu Projekt> Eigenschaften> C/C++ Build> Einstellungen> GCC C++ Compiler> Includes und fügen Sie den OpenCV-Quellordner "C:\OpenCV245PC\build\include" hinzu.
  19. Gehen Sie zu Projekt> Eigenschaften> C/C++ Build> Einstellungen> MinGW C++ Linker> Bibliotheken und fügen Sie den Bibliotheken (-l) EINZELN hinzu ( das von Projekt zu Projekt unterschiedlich sein können, Sie alle von ihnen hinzufügen können, wenn Sie einige von ihnen mögen oder nur diejenigen, die Sie für Ihr Projekt benötigen): opencv_calib3d245 opencv_contrib245 opencv_core245 opencv_features2d245 opencv_flann245 opencv_gpu245 opencv_highgui245 opencv_imgproc245 opencv_legacy245 opencv_ml245 opencv_nonfree245 opencv_objdetect245 opencv_photo245 opencv_stitching245 opencv_video245 opencv_videostab245
  20. Fügen Sie den erstellten OpenCV-Bibliotheksordner "C:\OpenCV245MinGW\x86\lib" zum Bibliothekssuchpfad (-L) hinzu.

Mit diesem Code können Sie Ihr Setup testen:

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

using namespace std;
using namespace cv;

int main()
{

Mat img = imread("c:/lenna.png", CV_LOAD_IMAGE_COLOR);

namedWindow("MyWindow", CV_WINDOW_AUTOSIZE);
imshow("MyWindow", img);

waitKey(0);
return 0;
}

Vergessen Sie nicht, das Bild in das Feld C:/(zu stellen (oder wo immer Sie es als geeignet erachten). Vergewissern Sie sich nur, dass Eclipse Lesezugriff hat.

13
Nenad Bulatovic

Wenn Sie opencv 2.4.2 installiert haben, müssen Sie das -lopencv_core240 bis -lopencv_core242

Ich habe den gleichen Fehler gemacht.

3
doenonesmith

Unter Windows 64bit funktioniert es:

  1. Download opencv-3.0 (beta) , MinGW (Kommandozeilen-Tool);
  2. Fügen Sie über dem jeweiligen bin-Ordner PATH var hinzu;
  3. Erstellen Sie einen Ordner "release" (kann ein beliebiger Name sein) in;
  4. Öffnen Sie in dem erstellten Ordner das Eingabeaufforderungsterminal und führen Sie die folgenden Befehle aus.
  5. Kopieren Sie diesen Befehl und fügen Sie ihn ein

    cmake -G "MinGW Makefiles" -D CMAKE_CXX_COMPILER=mingw32-g++.exe -D WITH_IPP=OFF MAKE_MAKE_PROGRAM=mingw32-make.exe ..\

  6. Führe diesen Befehl aus mingw32-make

  7. Führe diesen Befehl aus mingw32-make install

[~ # ~] erledigt [~ # ~]

2
aspadacio

Ich habe die Anweisungen in dieser Schritt-für-Schritt-Anleitung verwendet und es hat funktioniert.

http://nenadbulatovic.blogspot.co.il/2013/07/configuring-opencv-245-Eclipse-cdt-juno.html

1
s.shpiz

Wie von @Nenad Bulatovic betont, muss man beim Hinzufügen von Bibliotheken vorsichtig sein (19. Schritt). man sollte keine nachgestellten Leerzeichen hinzufügen, während man jede Bibliothek zeilenweise hinzufügt. sonst geht mingw drunter und drüber.

0
gyro