[solved] Impossible to include OpenCV path
-
I am trying to configure a new Qt Creator project in order to use OpenCV 3.1.0. I downloaded the precompiled binaries from http://opencv.org/downloads.html, and I created an empty Qt gui project. The problem is that qmake doesn't find the opencv headers, no matter how I try to include their path. Here is my last attempt:
QT += core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets TARGET = App_v1 TEMPLATE = app INCLUDEPATH += C:/OpenCV-3.1.0/opencv/build/include LIBS += -L”C:\OpenCV-3.1.0\opencv\build\x64\vc14\lib” LIBS += -lopencv_world310d SOURCES += main.cpp\ mainwindow.cpp HEADERS += mainwindow.h FORMS += mainwindow.ui
and in the code:
#include <iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include "mainwindow.h" #include <QApplication> using namespace std; int main(int argc, char *argv[]) { cv::Mat image = cv::Mat::zeros(100, 100, CV_8UC3); cv::imshow("image", image); cv::waitKey(10); cout << "Hello cout!" << endl; cerr << "Hello cerr!" << endl; printf("Hello printf!"); cout << flush; QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); }
When I try to compile this, I get: "C1083: Cannot open include file: 'opencv2/core/core.hpp": No such file or directory
(btw thanks Qt Creator for not letting me select and copy the text of the error. Sorry I digress...)
I am sure that the path is correct, and the funny thing is that when I type cv:: the auto completion finds and lists the classes and functions in the cv namespace.... what is going on here?EDIT: I forgot to mention that OpenCV works perfectly with Visual Studio, so I know that it is installed correctly.
-
@VRonin Yep that was the problem, thank you. I didn't think about cleaning before rebuilding, I believe that it should be automatic... Sadly, now I have another problem:
:-1: error: LNK1104: cannot open file 'opencv_world310d.lib'
and again, I know that the name of the file and the path are correct
-
@VRonin Thank you again, now it works. I also had to copy the dlls from Qt and opencv into the program folder, since it wouldn't find them otherwise. Now the program runs correctly, many thanks.
If I may ask one more question, do you know if it is possible to add a path for dlls in qmake? Or is that only related to the windows path variable, since the dlls are to be loaded at runtime after compilation?
-
dll paths do not influence the build so they are not included in qmake. if you use QtCreator in the right bar select project and in the build and run tab, select the run subtab and you can customise the run environment adding the paths of the dlls to the run environment PATH
otherwise you can use the INSTALLS of qmake to deploy all the binaries where you need them