Подтвердить что ты не робот

Как связать opencv в QtCreator и использовать библиотеку Qt

Этот вопрос должен повторяться много раз, но он просто не работает, а иногда он остается без ответа. Источниками информации являются в основном эти http://www.laganiere.name/opencvCookbook/chap1s1_2.shtml
http://www.youtube.com/watch?v=dgcXYQijV6c

Это суммирование того, что, как я думаю, нужно/может сделать. (И теперь это работает для меня.) Надеюсь, я упомянул все с самого начала, цель состоит в том, чтобы написать очень четкий учебник.

Установка OpenCV для QtCreator

  • У меня уже установлен MS Visual Studio 2010 Professional. (У меня есть свободная лицензия как студент) - я думаю, что это не обязательно, просто упоминание
  • Загрузка: Qt 5.0.1 для Windows 32-разрядная (MinGW 4.7, 823 МБ)
    2.1 Установить: Предупреждение. Все, что использует Qt (например, OpenCV), должно быть в каталогах, которые не содержат белых пробелов в их именах. - т.е. "Программные файлы" ошибочны. (Но я не хочу, чтобы разные файлы программ накапливались непосредственно на C, поэтому я сделал только папку "Программы", в которой все важное значение установлено).
  • Загрузить: cmake-2.8.10.2-win32-x86.exe - установить для всех пользователей (это может быть в Program Files)
  • Загрузить: OpenCV-2.4.0.exe, извлечь в: C:\Programs\opencv24 - он создаст каталог "opencv"; добавьте еще одну папку "opencv_bin". Теперь это выглядит так:
    <Я > C:\Programs\opencv24\OpenCV *
    <Я > C:\Programs\opencv24\opencv_bin
  • Установить переменную среды PATH, чтобы была ссылка на компилятор MinGW. например <Я > C:\Programs\Qt\Qt5.0.1\Tools\MinGW\Bin;
  • Запустить cmake-gui.exe
    6.1 исходный код: установить стандартный каталог для OpenCV; <Я > C:\Programs\opencv24\OpenCV
    6.2 двоичные файлы: установить каталог opencv_bin; C:\Programs\copencv24\opencv_bin
    6.3 нажмите configure:
    • Выберите MinGW Makefiles и Укажите собственные компиляторы, нажмите кнопку
    • Поле C для gcc.exe; <Я > С:/Programs/Qt/Qt5.0.1/Tools/MinGW/bin/gcc.exe
    • Поле С++ для g++. exe; <Я > C:/Programs/Qt/Qt5.0.1/Tools/MinGW/bin/g++ ехе. Поле fortran может быть пустым, нажмите "Готово"
    6.4 Появится много красных строк. В поле поиска введите один за другим: WITH_QT, WITH_TBB, WITH_IPP, WITH_CUDA, CMAKE_BUILD_TYPE
    • WITH_QT - должен быть выбран.
    • WITH_TBB, WITH_IPP, WITH_CUDA - должны быть не выбраны
    • CMAKE_BUILD_TYPE - щелкните и введите текст "Отладка" (без кавычек). Очистите текст из поля поиска.
    6.5 нажмите configure и продолжайте нажимать configure до тех пор, пока все красные линии не исчезнут, а затем щелкните и закрыть cmake-gui.exe
  • Перейдите в терминал (~ командная строка), cd в каталог, где находятся сборки (opencv_bin), и введите mingw32-make
  • Когда процесс завершится через долгое время, введите mingw32-make install
  • Добавьте в переменную Path путь к QtCreator/bin C:\Programs\Qt\Qt5.0.1\Tools\QtCreator\bin

Теперь я создал новое консольное приложение в QtCreator.

//cvHello.pro
QT       += core
QT       -= gui

TARGET = cvHello
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app
INCLUDEPATH += C:/Programs/opencv24/opencv_bin2/install/include
LIBS += "C:/Programs/opencv24/opencv_bin2/bin/*.dll"

SOURCES += main.cpp
OTHER_FILES += \
    img.JPG

И главный файл:

//main.cpp
#include <iostream>
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv/cv.h"

using namespace std;

int main()
{
    cout << "Hello World!" << endl;

    cv::Mat mat;
    mat = cv::imread("img.JPG");
    cvNamedWindow("hello");
    cv::imshow("hello",mat);

    cvWaitKey(0);

    return 0;
}
4b9b3361

Ответ 1

Наконец, я начинаю быть счастливым. При настройке этого вопроса мне пришлось попробовать все, как определить LIBS. Листинг их вручную помог, сначала я написал их как-то неправильно.

Вот как это работает наконец:

LIBS += -LC:\\Programs\\opencv24\\opencv_bin2\\bin \
    libopencv_core240d \
    libopencv_highgui240d \
    libopencv_imgproc240d \
    libopencv_features2d240d \
    libopencv_calib3d240d \

Кстати, если я допустил какие-либо грамматические ошибки, мне жаль мой английский.:)