Настройка OpenCV-2.3 для Visual Studio 2010

Я пытаюсь использовать OpenCV 2.3 с Visual Studio 2010 Express. Мой код из примера:

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

Что я сделал до сих пор?

  • добавленной build\bin и один из build\{x86|x64}\{vc9\vc10\mingw}\bin на мой системный путь (для использования DLL).
  • добавленной build\{x86|x64}\{vc9\vc10\mingw}\lib или же build\{x86|x64}\{vc9\vc10\mingw}\staticlib в качестве библиотечных каталогов для моих настроек компоновщика.
  • добавленной build\include а также build\include\opencv как включить каталоги в настройках моего компилятора.

И результат:

1> ССЫЛКА: фатальная ошибка LNK1104: невозможно открыть файл 'c:\OpenCV2.3\build\x86\vc10\lib.obj'

Нет никаких lib.obj в папках OpenCV. Я только разархивировал OpenCV-2.3.0-win-superpack.exeбез использования программного обеспечения CMake.

Что я делаю неправильно?

3 ответа

Решение

Официальное руководство предназначено для установки OpenCV 2.1 на VS2010, поэтому ниже я написал несколько инструкций, в которых показано, как правильно установить и настроить версию OpenCV 2.3 для x86 в Visual Studio 2010 (Express), поскольку у многих людей возникают проблемы. настроить его правильно.

Загрузите OpenCV-2.3.0-win-superpack.exe и выполните его, чтобы извлечь все файлы в папку с именем OpenCV2.3, Внутри этой папки есть 2 каталога: build а также opencv, Все настройки VS2010 будут относиться к build каталог. Для практических целей я переместил папку OpenCV2.3 к моему C:\ диск, поэтому обратите внимание на пути, которые я предлагаю в этом руководстве, поскольку у вас могут быть разные.

В Visual Studio создайте новый проект консольного приложения Win32 и назовите его как хотите. После этого появится новое окно. Нажмите на вкладку " Настройки приложения" и убедитесь, что выбрана опция " Пустой проект":

Добавить новый файл main.cpp в папку Source Files затем добавьте этот код в 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;
}

На этом этапе нам нужно настроить проект, чтобы он мог найти заголовки и библиотеки OpenCV. Перейдите в Свойства проекта (ALT + F7), и после появления нового окна сделайте следующее:

  • В поле " Конфигурация" выберите " Все конфигурации".

  • Откройте " Свойства конфигурации"> "C/C++"> "Общие" и отредактируйте поле " Дополнительные каталоги включения", чтобы добавить эти 3 пути (для заголовков):

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

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

    C:\OpenCV2.3\build\include

Обратите внимание, что include\opencv для интерфейса C OpenCV и include\opencv2 если для интерфейса C++. Мы также добавляем папку include чтобы предотвратить повреждение нашей сборки некоторыми заголовками интерфейса C, которые ссылаются на заголовки C++ как opencv2\core,

  • Затем добавьте путь к библиотекам в Свойства конфигурации> Компоновщик> Общие, а в поле Дополнительные каталоги библиотек добавьте следующее: C:\OpenCV2.3\build\x86\vc9\lib:

  • Наконец, для этого простого теста мы собираемся добавить библиотеки opencv_core230.lib а также opencv_highgui230.lib, Перейдите в " Свойства конфигурации"> "Линкер"> "Ввод" и добавьте их:

При написании более сложных приложений вам, вероятно, потребуется добавить другие библиотеки OpenCV, которые я не упомянул в этом нашем небольшом проекте.

Нажмите F7, чтобы построить решение, и вы должны увидеть:

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

Чтобы иметь возможность выполнить приложение, вам нужно изменить переменную среды PATH в вашей системе, чтобы добавить расположение библиотек DLL OpenCV. Добавьте это к концу пути:

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

Если вам сложно редактировать переменные среды PATH, вы также можете скопировать необходимые DLL-файлы в папку вашего проекта:DLL-файлы находятся в этой папке../OpenCV2.3/build.x86/vc9/bin

Затем скопируйте их в папку, в которой создается файл.exe:c: \ Users \ PIMMES \ Documents \ Visual Studio 2010 \ Projects \ eigenfaces \ Debug (Конечно, вы должны изменить путь к папке Debug)

Вам нужно только скопировать DLL-файлы, которые вы используете в своем проекте (например, #include). Например, если вы получаете сообщение об ошибке, в котором говорится, что opencv_core231d.dll не найден, получите этот DLL-файл из указанного выше места (папка bin) и скопируйте в папку проекта Debug.

Надеюсь это поможет..

Всякий раз, когда я делаю программу, которая использует opencv 2.2 или выше, я включаю все, а затем закомментирую библиотеки, которые мне не нужны. Попробуйте это, я уверен, что вам нужно больше, чем 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")
Другие вопросы по тегам