_


вторник, 5 апреля 2011 г.

Затачиваем OpenCV под QT на Windows: Компиляция OpenCV под QT, создание OpenCV проекта на QT


Привет, народ! Сегодня расскажу вам как компилировать OpenCV с поддержкой QT ...






1. Скачиваем OpenCV2.2
2. Скачиваем CMake
3. Скачиваем QT
4. Скачиваем CodeBlocks

Скачали? Едем дальше :)
5. Устанавливаем OpenCV2.2 (установка описана здесь)
6. Устанавливаем CMake
7. Устанавливаем QT (по умолчанию)

8. Устанавливаем CodeBlocks. Не забываем добавить переменные окружения:
8.1. Пуск - выполнить -> rundll32.exe sysdm.cpl, EditEnvironmentVariables
8.2. Выбираем PATH -> Изменить
8.3. Добавляем в конец ;C:\Program Files\CodeBlocks\MinGW\bin;C:\Qt\2010.05\qt\bin
8.3.1. Также проверим переменную PATH на наличие пути к библиотекам OpenCV. Если отсутствует, добавляем (в моем примере следует добавить к PATH ;C:\OpenCV2.2_QT\opencv\pro\bin)
8.4. Убиваем тыком мыши кнопки OK до тех пор, пока их не будет видно на вашем мониторе :)

9. Запускаем %ProgramFiles%\CMake\bin\cmake-gui.exe (запуск желательно с правами админа)
(у меня OpenCV лежит тут: C:\OpenCV2.2_QT\opencv) 
Устанавливаем следующие параметры:

10. Жмем Confugure, на внезапное окошко отвечаем Yes

11. Далее в раскрывающемся списке выбираем "MiniGW Makefiles" и ставим галочку "Specify native compilers", жмем Next

12. В следующем окне указываем пути компиляторов:
12.1. Для C: C:/Program Files/CodeBlocks/MinGW/bin/gcc.exe 
12.2. Для C++: C:/Program Files/CodeBlocks/MinGW/bin/g++.exe 
12.3. Жмем Finish 

13. В главном окне CMake ставим галочки на:
WITH_QT
WITH_QT_OPENGL 

14. Жмем Configure

15. Указываем путь для QT_QMAKE_EXECUTABLE 
(в моем случае это C:/Qt/2010.05/qt/bin/qmake.exe)
Да тут важный момент - НЕ ПЕРЕПУТАЙТЕ файлы qmake.exe (нужен тот, что в папке bin)

15.1. Ставим галочку BUILD_EXAMPLES
15.2. Устанавливаем значение CMAKE_BUILD_TYPE равным Debug 
15.3. Еще раз жмем Configure 
Ошибки должны исчезнуть и внизу появится надпись Configuring done 

16. Жмем кнопку Generate 
Внизу появится надпись Generating done 
Закрываем CMake

17. Запускаем консоль CMD с правами администратора, заходим в папку указанную во втором поле на шаге 9 
(в моем случае это C:\OpenCV2.2_QT\opencv\pro)

18. В консоли CMD пишем: mingw32-make
Жмем ENTER и любуемся компиляцией:

  
19. В консоли CMD пишем: mingw32-make install
Опять жмем ENTER и ждем окончания 


20. Теперь можно переходить и к созданию OpenCV проекта на QT!
21. Создаем Empty Project в Qt Creator

22.  В *.pro-файл добавляем следующее:

INCLUDEPATH+=C:\\OpenCV2.2_QT\\opencv\\pro\\include
INCLUDEPATH+=C:\\OpenCV2.2_QT\\opencv\\pro\\include\\opencv
LIBS+=C:\\OpenCV2.2_QT\\opencv\\pro\\lib\\libopencv_core220d.dll.a
LIBS+=C:\\OpenCV2.2_QT\\opencv\\pro\\lib\\libopencv_contrib220d.dll.a
LIBS+=C:\\OpenCV2.2_QT\\opencv\\pro\\lib\\libopencv_features2d220d.dll.a
LIBS+=C:\\OpenCV2.2_QT\\opencv\\pro\\lib\\libopencv_flann220d.dll.a
LIBS+=C:\\OpenCV2.2_QT\\opencv\\pro\\lib\\libopencv_highgui220d.dll.a
LIBS+=C:\\OpenCV2.2_QT\\opencv\\pro\\lib\\libopencv_objdetect220d.dll.a
LIBS+=C:\\OpenCV2.2_QT\\opencv\\pro\\lib\\libopencv_video220d.dll.a
LIBS+=C:\\OpenCV2.2_QT\\opencv\\pro\\lib\\libopencv_legacy220d.dll.a
LIBS+=C:\\OpenCV2.2_QT\\opencv\\pro\\lib\\libopencv_calib3d220d.dll.a
LIBS+=C:\\OpenCV2.2_QT\\opencv\\pro\\lib\\libopencv_ffmpeg220d.dll.a
LIBS+=C:\\OpenCV2.2_QT\\opencv\\pro\\lib\\libopencv_imgproc220d.dll.a
LIBS+=C:\\OpenCV2.2_QT\\opencv\\pro\\lib\\libopencv_ml220d.dll.a
 
23. Добавляем новый *.cpp файл, к примеру test.cpp
 
24. Пихаем в свежесозданный файлик это:
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
    IplImage *img = cvLoadImage("D:\\girl.png");
    cvNamedWindow("Hello, QT! From OpenCV!");
    cvShowImage("Hello, QT! From OpenCV!", img);
    cvWaitKey();
    return 0;
}
 
25. Запускаем проект при помощи нажатия CTRL+R и видим РЕЗУЛЬТАТ!
 

В ходе работы возникали следующие проблемы:
1. Сборка OpenCV из SVN-репозитория даёт ошибку
2. Создание QT-проектов Widgets|GUI дают ошибку на функциях OpenCV

Внимание! Публиковать материалы, представленные в этом блоге можно ТОЛЬКО с разрешения его автора!

7 комментариев:

Анонимный комментирует...

Спасибо! К сожаленю только не могу создать какое-либо Gui приложение...
выдаёт ошибку вида
C:\qt-greenhouse\Trolltech\Code_less_create_more\Trolltech\Code_less_create_more\Troll\4.6\qt\src\winmain/qtmain_win.cpp:93: undefined reference to `_Unwind_Resume'

гугл мне намекнул, что это из-за стороннего компилятора. как решить проблему пока не нашёл :(

Консольные приложения же работают без проблем.

zxFRoL комментирует...

Елачки-иголочки как был я баобабом,баобабом и....
Вторые сутки на исходе спать хочу, башка уже не варит, я упорный все равно победю :) Парни прошу Вашей помощи, надоедать сильно не буду (наверное). icq 480070970

Андрей А комментирует...

zxFRoL, тупое упрямство ни к чему не приведет. Это первое. Второе - задавайте вопросы по существу, иначе подобные комментарии будут удаляться. И третье - утро вечера мудренее. Советую.

Serg комментирует...

Большое человеческое спасибо! :)

Анонимный комментирует...

После нажатия на Финиш выдает:
CMake Error: CMake was unable to find a build program corresponding to "MinGW Makefiles". CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool.
CMake Error: CMake was unable to find a build program corresponding to "MinGW Makefiles". CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool.
CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
Missing variable is:
CMAKE_C_COMPILER_ENV_VAR
CMake Error: Could not find cmake module file:D:/OpenCV-2.2.0/mingw32/instal/CMakeFiles/CMakeCCompiler.cmake
CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
Missing variable is:
CMAKE_CXX_COMPILER_ENV_VAR
CMake Error: Could not find cmake module file:D:/OpenCV-2.2.0/mingw32/instal/CMakeFiles/CMakeCXXCompiler.cmake
Configuring incomplete, errors occurred!
Пунктов WITH_QT и WITH_QT_OPENGL нет... В чём причина? Помогите, плиз.

Алексей Корнилов комментирует...
Этот комментарий был удален автором.
Анатолий комментирует...

Приветствую!
Сделал всё по твоему мануалу, но при попытке скомпилировать выдаёт вот такие ошибки:
F:\Documents\Qt\SimpleCV-build-desktop-Qt_4_8_1_for_Desktop_-_MinGW__Qt_SDK_________\..\SimpleCV\main.cpp:1: ошибка: opencv2/imgproc/imgproc.hpp: No such file or directory
F:\Documents\Qt\SimpleCV-build-desktop-Qt_4_8_1_for_Desktop_-_MinGW__Qt_SDK_________\..\SimpleCV\main.cpp:1: ошибка: opencv2/imgproc/imgproc.hpp: No such file or directory

Отправить комментарий