02 Nov 2014
Qt is a “cross-plataform application and UI framework” that is being used for 800,000+ users. In this post we’re going to learn how to use OpenCV 3 on Qt 5.3 projects, so that you can create your applications with great UI features easier. If you remain with any doubt after reading this post, watch the video.
Pre-requirements:
This post has been translated to ‘farsi’ (persian) language by Ali (thanks!).
Before we start, I need to say I’m assuming you already have OpenCV 3 installed on your Ubuntu. If this isn’t your case, check the tutorial in the pre-requirements note. Even if you have, pay attention to this fact: OpenCV must have been compiled without WITH_QT=ON
, because this flag enables OpenCV with Qt 4, not Qt 5.x, as we want here.
I know you’d like to see screenshots along this post, right? You won’t. Instead, I prefer to make videos so you can see the whole process. I hope you enjoy.
Downloading and installing Qt 5.3 and Qt Creator 3.2 Qt gives us a lot of options to download its framework and we’re going to use what’s recommended: Qt Online Installer for Linux.
Creating a Project on Qt Creator 3.2
Linking OpenCV to our projects – Qt Creator 3.2 (Qt 5.3)
First of all, go to your “.pro” file and add the following lines before “SOURCES”:
INCLUDEPATH += /usr/local/include/opencv
LIBS += -L/usr/local/lib -lopencv_core -lopencv_imgcodecs -lopencv_highgui
Remember to add all the libraries you’re going to need in your project. I’ve added only these three (core, imgcodecs and highgui), because we’re going to build a very basic sample. After that, you’re ready to use OpenCV in your project.
Building and running a sample
The program we’re going to use is very simple: you’ll need to hard-code the filepath to an image so that cv::imread()
can read it and the image will be displayed by cv::imshow()
. This way we can proof that OpenCV is running on Qt Creator.
Add the following lines after ui->setupUi(this)
in the file Sources/mainwindow.cpp
:
Make sure your PATH_TO_IMAGE
is valid. A lot of users were experiencing errors due to invalid paths. If your program runs and nothing happens, your image path is wrong.
cv::Mat inputImage = cv::imread("{PATH_TO_IMAGE}");
if(!inputImage.empty()) cv::imshow("Display Image", inputImage);
Don’t forget to add #include <opencv2/opencv.hpp>
on the header.
Build the project (Build » Build Project or Ctrl+B) and run it (Build » Run or Ctrl+R).
Any doubts? Watch the video below:
The image used on the video was created by Razaras.
If you still have doubts or you’re facing any problem, send me an email: me [at] rodrigoberriel.com. Don’t forget to leave your comment.