I've been struggling with making OpenCV work with Qt, but for some reason isn't it able to recognize OpenCV libraries. I've already tried nearly all the tutorials on stackoverflow, but for some reason it does not work.
The error message i get is.
10:50:36: Running steps for project test...
10:50:36: Configuration unchanged, skipping qmake step.
10:50:36: Starting: "/usr/bin/make"
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -headerpad_max_install_names -Wl,-syslibroot,/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk -mmacosx-version-min=10.7 -Wl,-rpath,/Users/me/Qt/5.4/clang_64/lib -o test.app/Contents/MacOS/test main.o mainwindow.o moc_mainwindow.o -F/Users/me/Qt/5.4/clang_64/lib -L/usr/local/lib -framework QtWidgets -framework QtGui -framework QtCore -framework DiskArbitration -framework IOKit -framework OpenGL -framework AGL
Undefined symbols for architecture x86_64:
"cv::_InputArray::_InputArray(cv::Mat const&)", referenced from:
MainWindow::MainWindow(QWidget*) in mainwindow.o
"cv::Mat::deallocate()", referenced from:
cv::Mat::release() in mainwindow.o
"cv::imread(std::string const&, int)", referenced from:
MainWindow::MainWindow(QWidget*) in mainwindow.o
"cv::imshow(std::string const&, cv::_InputArray const&)", referenced from:
MainWindow::MainWindow(QWidget*) in mainwindow.o
"cv::fastFree(void*)", referenced from:
cv::Mat::~Mat() in mainwindow.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [test.app/Contents/MacOS/test] Error 1
10:50:37: The process "/usr/bin/make" exited with code 2.
Error while building/deploying project test (kit: Desktop Qt 5.4.0 clang 64bit)
When executing step "Make"
10:50:37: Elapsed time: 00:00.
this is my .pro file
#-------------------------------------------------
#
# Project created by QtCreator 2015-01-23T19:58:31
#
#-------------------------------------------------
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = test
TEMPLATE = app
INCLUDEPATH += /usr/local/include
HEADERS += mainwindow.h
LIBS += -L/usr/local/lib
-lopencv_core
-lopencv_imgcodecs
-lopencv_highgui
-lopencv_imgproc
SOURCES += main.cpp\
mainwindow.cpp
FORMS += mainwindow.ui
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
main.cpp
#include "mainwindow.h"
#include <QApplication>
#include <iostream>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
std::cout << "hello world - lalala" << std::endl;
return a.exec();
}
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <opencv2/opencv.hpp>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
cv::Mat inputImage = cv::imread("/users/horse.jpg");
cv::imshow("test",inputImage);
}
MainWindow::~MainWindow()
{
delete ui;
}
mainwindow.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>797</width>
<height>525</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralWidget">
<widget class="QPushButton" name="pushButton">
<property name="geometry">
<rect>
<x>350</x>
<y>330</y>
<width>113</width>
<height>32</height>
</rect>
</property>
<property name="text">
<string>done</string>
</property>
</widget>
<widget class="QGraphicsView" name="input">
<property name="geometry">
<rect>
<x>50</x>
<y>70</y>
<width>256</width>
<height>192</height>
</rect>
</property>
</widget>
<widget class="QGraphicsView" name="output">
<property name="geometry">
<rect>
<x>490</x>
<y>70</y>
<width>256</width>
<height>192</height>
</rect>
</property>
</widget>
</widget>
<widget class="QMenuBar" name="menuBar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>797</width>
<height>22</height>
</rect>
</property>
<widget class="QMenu" name="menuOpenCV">
<property name="title">
<string>OpenCV</string>
</property>
</widget>
<addaction name="menuOpenCV"/>
</widget>
<widget class="QToolBar" name="mainToolBar">
<attribute name="toolBarArea">
<enum>TopToolBarArea</enum>
</attribute>
<attribute name="toolBarBreak">
<bool>false</bool>
</attribute>
</widget>
<widget class="QStatusBar" name="statusBar"/>
</widget>
<layoutdefault spacing="6" margin="11"/>
<resources/>
<connections/>
</ui>