Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to link opencv in QtCreator and use Qt library

This question must be duplicate many times, but it just doesn't work and sometimes it still remains unanswered. Sources of information are mainly these
http://www.laganiere.name/opencvCookbook/chap1s1_2.shtml
http://www.youtube.com/watch?v=dgcXYQijV6c

This is the summation of what I think one should/can do. (And now it works for me.) Hopefully I mentioned everything from the very beginning, the aim is to write a very clear tutorial.

Installation of OpenCV for QtCreator

  1. I have already MS Visual Studio 2010 Professional installed. (I have a free licence as a student) - I think this is not necessary, just a mention
  2. Download: Qt 5.0.1 for Windows 32-bit (MinGW 4.7, 823 MB)
    2.1 Install: Warning, everything that Qt uses (e.g. OpenCV) must be in directories that don't contain white-spaces in their names. - i.e. "Program Files" is wrong. (But I don't want different program files to accumulate directly on C, so I've only made a folder "Programs" in which everything important is installed)
  3. Download: cmake-2.8.10.2-win32-x86.exe - Install for all users (this can be in Program Files)
  4. Download: OpenCV-2.4.0.exe, extract to: C:\Programs\opencv24 - it'll create a dir "opencv"; add another folder "opencv_bin". Now it looks like this:
    C:\Programs\opencv24\opencv*
    C:\Programs\opencv24\opencv_bin
  5. Set PATH environment variable, so that there be a link to MinGW compiler. e.g. C:\Programs\Qt\Qt5.0.1\Tools\MinGW\bin;
  6. Start cmake-gui.exe
    6.1 source code: set the default dir for OpenCV; C:\Programs\opencv24\opencv
    6.2 binaries: set the opencv_bin dir; C:\Programs\copencv24\opencv_bin
    6.3 click configure:
    • Choose MinGW Makefiles and Specify native compilers, click next
    • Field C is for gcc.exe; C:/Programs/Qt/Qt5.0.1/Tools/MinGW/bin/gcc.exe
    • Field C++ is for g++.exe; C:/Programs/Qt/Qt5.0.1/Tools/MinGW/bin/g++.exe
    • Field fortran can be empty, click finish
    6.4 Many red lines will appear To the search field enter one by one: WITH_QT, WITH_TBB, WITH_IPP, WITH_CUDA, CMAKE_BUILD_TYPE
    • WITH_QT - must be selected.
    • WITH_TBB, WITH_IPP, WITH_CUDA - must be unselected
    • CMAKE_BUILD_TYPE - click and enter a text "Debug" (without quotes).
    • Clear the text from the Search field.
    6.5 click configure and keep clicking configure until all red lines are gone, then click generate and close cmake-gui.exe
  7. Go to the terminal (~command prompt), cd to the directory where are the builds (opencv_bin) and type mingw32-make
  8. When the process ends after a long time, type mingw32-make install
  9. Add into Path variable the path to the QtCreator/bin C:\Programs\Qt\Qt5.0.1\Tools\QtCreator\bin

Now I have created a new console app in 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 

And the main file:

//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; } 
like image 678
Daniel Katz Avatar asked Apr 08 '13 14:04

Daniel Katz


People also ask

What is Qt OpenCV?

From Qt Wiki. OpenCV is a cross-platform, open-source, commonly used computer vision library. It uses C++ as its primary interface, but other languages such as C and Python can also be used. OpenCV was originally developed by Intel back in 1999 and is now maintained by Willow Garage and ItSeez.

Is Qtcreator an IDE?

Qt Creator is a cross-platform integrated development environment (IDE) built for the maximum developer experience. Qt Creator runs on Windows, Linux, and macOS desktop operating systems and allows developers to create software across desktop, mobile, and embedded platforms.


2 Answers

Finally I am starting to be happy. When adjusting this question I had to try all ways, how to define LIBS. Listing them manually helped, at first I wrote them somehow wrongly.

This is how it works finally:

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

Btw if I've made any grammar mistakes, I am sorry for my english. :)

like image 56
Daniel Katz Avatar answered Sep 28 '22 21:09

Daniel Katz


The originally accepted answer did not work for me, I am running MSVC2013 Professional and QT5.9. I found SIMPLE and SUREFIRE CROSS-PLATFORM solution that should help anyone who is trying to link an external library (like openCV) with QT.

The steps listed below are found in the Qt5 documentation: http://doc.qt.io/qtcreator/creator-project-qmake-libraries.html under the "To Add Library" section.

  1. Right click on the project file located in the 'project pane' on the left side of the creator... and select "Add Library..."
  2. Follow the instructions of the wizard

Let me add some specificity from here:

  1. Select "External Library"
  2. For the "Library File" navigate to your opencv_worldXXX.lib file (or opencv_worldXXXd.lib file, you will notice that by specifying only one or the other the wizard has a checkbox which includes the other automatically) [ex. ...\opencv\build\x64\vc12\lib\opncv_world310.lib]
  3. For the "Include Folder" navigate to the "include" folder within the build. [ex. ...\opencv\build\include]
  4. Select your operating system, dynamic/static library (whichever is appropriate)
  5. Hit NEXT, CLEAN UP, and RUN!
like image 35
IntenseCorona Avatar answered Sep 28 '22 20:09

IntenseCorona