Ich versuche, opencv 2.3 mit Visual Studio 2010 Express zu verwenden. Mein Code ist aus Beispiel:
#include "stdafx.h"
#include <highgui.h>
int _tmain(int argc, _TCHAR* argv[])
{
int c;
// allocate memory for an image
IplImage *img;
// capture from video device #1
CvCapture* capture = cvCaptureFromCAM(1);
// create a window to display the images
cvNamedWindow("mainWin", CV_WINDOW_AUTOSIZE);
// position the window
cvMoveWindow("mainWin", 5, 5);
while(1)
{
// retrieve the captured frame
img=cvQueryFrame(capture);
// show the image in the window
cvShowImage("mainWin", img );
// wait 10 ms for a key to be pressed
c=cvWaitKey(10);
// escape key terminates program
if(c == 27)
break;
}
return 0;
}
Was habe ich bisher gemacht?
- Hinzugefügt
build\bin
und einer von build\{x86|x64}\{vc9\vc10\mingw}\bin
zu meinem Systempfad (um DLLs zu verwenden).
- Hinzugefügt
build\{x86|x64}\{vc9\vc10\mingw}\lib
oder build\{x86|x64}\{vc9\vc10\mingw}\staticlib
als Bibliotheksverzeichnisse zu meinen Linker-Einstellungen.
- Hinzugefügt
build\include
und build\include\opencv
als Include-Verzeichnisse zu meinen Compiler-Einstellungen hinzufügen.
Und das Ergebnis ist:
1>LINK: schwerwiegender Fehler LNK1104: Datei „c:\OpenCV2.3\build\x86\vc10\lib.obj“ kann nicht geöffnet werden
Da ist kein lib.obj
in OpenCV-Ordnern. Ich habe nur entpackt OpenCV-2.3.0-win-superpack.exe
ohne die CMake-Software zu verwenden.
Was mache ich falsch?
Nun die offizieller Führer ist zum einbauen OpenCV 2.1 auf VS2010, daher habe ich unten einige Anweisungen geschrieben, die zeigen, wie man die x86 Version von OpenCV 2.3 an Visual Studio 2010 (Express), da viele Leute Probleme haben, es richtig einzurichten.
Herunterladen OpenCV-2.3.0-win-superpack.exe und führen Sie es aus, um alle Dateien in einen Ordner mit dem Namen zu extrahieren OpenCV2.3
. In diesem Ordner befinden sich 2 Verzeichnisse: build
und opencv
. Alle Einstellungen auf VS2010 beziehen sich auf die build
Verzeichnis. Aus praktischen Gründen habe ich den Ordner verschoben OpenCV2.3
zu meinem C:\
fahren, achten Sie also auf die Pfade, die ich in diesem Handbuch vorschlage, da Ihre möglicherweise anders sind.
Erstellen Sie in Visual Studio eine neue Win32-Konsolenanwendung Projekt und nennen Sie es wie Sie wollen. Danach erscheint ein neues Fenster. Klicken Sie auf die Registerkarte Anwendungseinstellungen und stellen Sie die Option sicher Leeres Projekt wird ausgewählt:

Fügen Sie eine neue Datei hinzu main.cpp
zum Ordner Source Files
dann fügen Sie diesen Code hinzu main.cpp
:
#include <stdio.h>
#include <cv.h>
#include <highgui.h>
int main(int argc, char* argv[])
{
if (argc < 2)
{
printf("Usage: ./opencv_hello <file.png>\n");
return -1;
}
IplImage* img = cvLoadImage(argv[1], CV_LOAD_IMAGE_UNCHANGED);
if (!img)
{
return -1;
}
cvNamedWindow("display", CV_WINDOW_AUTOSIZE);
cvShowImage("display", img );
cvWaitKey(0);
return 0;
}
An dieser Stelle müssen wir das Projekt so konfigurieren, dass es OpenCV-Header und -Bibliotheken finden kann. Gehen Sie zu den Projekteigenschaften (ALT+F7), und sobald das neue Fenster angezeigt wird, gehen Sie wie folgt vor:
-
Auf der Aufbau Kästchen, auswählen Alle Konfigurationen
-
Offen Konfigurationseigenschaften > C/C++ > Allgemeinund bearbeiten Sie das Feld Zusätzliche Include-Verzeichnisse um diese 3 Pfade hinzuzufügen (für die Header):
C:\OpenCV2.3\build\include\opencv
C:\OpenCV2.3\build\include\opencv2
C:\OpenCV2.3\build\include

Beachten Sie, dass include\opencv
ist für die C-Schnittstelle von OpenCV und include\opencv2
if für die C++-Schnittstelle. Wir fügen auch den Ordner hinzu include
um zu verhindern, dass unser Build durch einige Header der C-Schnittstelle beschädigt wird, die auf C++-Header als verweisen opencv2\core
.
- Fügen Sie dann den Pfad der Bibliotheken hinzu Konfigurationseigenschaften > Linker > Allgemeinund auf der Zusätzliche Bibliotheksverzeichnisse Feld, fügen Sie Folgendes hinzu:
C:\OpenCV2.3\build\x86\vc9\lib
:

- Schließlich werden wir für diesen einfachen Test die Bibliotheken hinzufügen
opencv_core230.lib
und opencv_highgui230.lib
. Also geh zu Konfigurationseigenschaften > Linker > Eingabe und füge sie hinzu:

Wenn Sie komplexere Anwendungen schreiben, müssen Sie wahrscheinlich andere OpenCV-Bibliotheken hinzufügen, die ich in diesem kleinen Projekt von uns nicht erwähnt habe.
Drücken Sie F7 zu Lösung erstellen und du solltest sehen:
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
Um die Anwendung ausführen zu können, müssen Sie modifiziere den WEG Umgebungsvariable Ihres Systems, um den Speicherort der DLLs von OpenCV hinzuzufügen. Fügen Sie dies am Ende von PATH hinzu:
; C:\OpenCV2.3\build\x86\vc9\bin
Wenn Sie Probleme mit der Bearbeitung der PATH-Umgebungsvariablen haben, können Sie die erforderlichen .dll-Dateien auch in Ihren Projektordner kopieren:
Die DLL-Dateien befinden sich in diesem Ordner ../OpenCV2.3/build.x86/vc9/bin
Kopieren Sie sie dann in den Ordner, in dem die .exe-Datei erstellt wird:
c:\Users\PIMMES\Documents\Visual Studio 2010\Projects\eigenfaces\Debug (Natürlich müssen Sie den Pfad zu Ihrem Debug-Ordner ändern)
Sie müssen nur die DLL-Dateien kopieren, die Sie in Ihrem Projekt verwenden (z. B. #include). Wenn Sie beispielsweise eine Fehlermeldung erhalten, die besagt, dass opencv_core231d.dll nicht gefunden wurde, holen Sie sich diese DLL-Datei vom oben genannten Speicherort (bin-Ordner ) und in den Debug-Ordner Ihres Projekts kopieren.
Hoffe das hilft..
Immer wenn ich ein Programm erstelle, das opencv 2.2 oder höher verwendet, füge ich alles hinzu und kommentiere dann die Bibliotheken aus, die ich nicht benötige. Versuchen Sie dies, ich bin sicher, Sie brauchen mehr als highgui.h
#include "opencv2\opencv.hpp"
using namespace cv;
//#pragma comment(lib, "opencv/opencv_calib3d231.lib")
//#pragma comment(lib, "opencv/opencv_contrib231.lib")
#pragma comment(lib, "opencv/opencv_core231.lib")
//#pragma comment(lib, "opencv/opencv_features2d231.lib")
//#pragma comment(lib, "opencv/opencv_flann231.lib")
//#pragma comment(lib, "opencv/opencv_gpu231.lib")
//#pragma comment(lib, "opencv/opencv_haartraining_engine.lib")
#pragma comment(lib, "opencv/opencv_highgui231.lib")
//#pragma comment(lib, "opencv/opencv_imgproc231.lib")
//#pragma comment(lib, "opencv/opencv_legacy231.lib")
//#pragma comment(lib, "opencv/opencv_ml231.lib")
#pragma comment(lib, "opencv/opencv_objdetect231.lib")
//#pragma comment(lib, "opencv/opencv_ts231.lib")
//#pragma comment(lib, "opencv/opencv_video231.lib")