33 votes

OpenCV 2.3 C++ Visual Studio 2010

Je suis en train d'utiliser opencv 2.3 avec Visual Studio 2010 Express. Mon code est à partir de l'exemple:

#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;
}

Qu'ai-je fait jusqu'à présent?

  • Ajouté build\bin et l'un d' build\{x86|x64}\{vc9\vc10\mingw}\bin de mon chemin d'accès système (à utiliser des Dll).
  • Ajouté build\{x86|x64}\{vc9\vc10\mingw}\lib ou build\{x86|x64}\{vc9\vc10\mingw}\staticlib , de la bibliothèque des répertoires de mon linker settings.
  • Ajouté build\include et build\include\opencv que d'inclure des répertoires de mon paramètres du compilateur.

Et le résultat est:

1>LINK : fatal error LNK1104: impossible d'ouvrir le fichier 'c:\OpenCV2.3\build\x86\vc10\lib.obj'

Il n'y a pas d' lib.obj dans OpenCV dossiers. Je n'ai unziped OpenCV-2.3.0-win-superpack.exe, sans utilisation de CMake logiciel.

Ce que je fais mal?

90voto

karlphillip Points 46502

Eh bien, le guide officiel est pour l'installation d' OpenCV 2.1 sur VS2010, j'ai donc écrit quelques instructions ci-dessous qui montre comment installer et de configurer correctement le x86 version d' OpenCV 2.3 sur Visual Studio 2010 (Express), puisque beaucoup de gens semblent avoir des problèmes de la configurer correctement.

Télécharger OpenCV-2.3.0-win-superpack.exe et de l'exécuter pour extraire tous les fichiers dans un dossier nommé OpenCV2.3. À l'intérieur de ce dossier il y a 2 répertoires: build et opencv. L'ensemble de l'installation sur VS2010 fera référence à l' build répertoire. Pour des raisons pratiques, j'ai déplacé le dossier OpenCV2.3 mon C:\ lecteur, donc attention aux chemins je suggère sur ce guide comme le vôtre peut être différent.

Sur Visual Studio, créez une nouvelle Application Console Win32 projet et nommez tout ce que vous voulez. Après cela, une nouvelle fenêtre va apparaître. Cliquez sur l'onglet Paramètres de l'Application et assurez-vous que l'option Projet Vide est sélectionné:

enter image description here

Ajouter un nouveau fichier main.cpp le dossier Source Files, puis ajoutez ce code à l' 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;
}

À ce stade, nous avons besoin de configurer le projet de sorte qu'il peut localiser OpenCV en-têtes et les bibliothèques. Accédez aux Propriétés du Projet (ALT+F7), et une fois la nouvelle fenêtre s'affiche effectuer les opérations suivantes:

  • Sur la Configuration de la zone, sélectionnez Toutes les Configurations

  • Ouvrez les Propriétés de Configuration > C/C++ > Général, et de modifier le champ Supplémentaire Inclure des Répertoires à ajouter ces 3 chemins (pour les en-têtes):

    C:\OpenCV2.3\build\include\opencv

    C:\OpenCV2.3\build\include\opencv2

    C:\OpenCV2.3\build\include

enter image description here

Notez que include\opencv est pour l'interface C de OpenCV et include\opencv2 si, pour l'interface C++. Nous sommes également d'ajouter le dossier include pour les empêcher de construire à partir de rupture des en-têtes de l'interface C qui se réfèrent à C++ en-têtes opencv2\core.

  • Ensuite, ajoutez le chemin d'accès des bibliothèques sur les Propriétés de Configuration > Linker > Général, et sur la Bibliothèque Supplémentaire Répertoires champ, ajouter ceci: C:\OpenCV2.3\build\x86\vc9\lib:

enter image description here

  • Enfin, pour ce simple test, nous allons ajouter les bibliothèques opencv_core230.lib et opencv_highgui230.lib. Donc aller dans les Propriétés de Configuration > Linker > Entrée et les ajouter:

enter image description here

Lors de l'écriture des applications plus complexes, vous aurez probablement besoin d'ajouter d'autres OpenCV libs que je n'ai pas mentionnés sur ce petit projet qui est le nôtre.

Appuyez sur F7 pour générer la Solution et vous devriez voir:

========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

Pour être en mesure d'exécuter l'application, vous aurez besoin de modifier le CHEMIN d'accès à la variable d'environnement de votre système pour ajouter l'emplacement de OpenCV de la Dll. Ajoutez ceci à la fin du CHEMIN:

; C:\OpenCV2.3\build\x86\vc9\bin

3voto

pimmes111 Points 164

Si vous êtes aux prises avec la modification du CHEMIN d'accès variables d'environnement, vous pouvez également copier le nécessaire .les fichiers dll dans votre dossier de projet: Les fichiers dll sont situés dans ce dossier ../OpenCV2.3/construire.x86/vc9/bin

Ensuite les copier dans le dossier où .exe fichier est créé: c:\Users\PIMMES\Documents\Visual Studio 2010\Projects\eigenfaces\Debug (bien sûr, vous devez modifier le chemin d'accès à votre dossier de Débogage)

Vous n'avez qu'à copier le .des fichiers dll qui vous aide dans votre projet (#inclure, par exemple) Par exemple, si vous obtenez un message d'erreur disant: opencv_core231d.dll n'est pas trouvé, alors l'obtenir .fichier dll à partir de l'emplacement ci-dessus (bin) et copie à votre projet dossier de Débogage.

Espérons que cela aide..

1voto

rossb83 Points 818

Chaque fois que je fais un programme qui utilise opencv 2.2 ou plus je comprend tout, et puis commentez les bibliothèques je n'ai pas besoin. Essayez ceci, je suis sûr que vous avez besoin de plus de 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")

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X