Seite 1 von 1

OpenCV mit Qt Linkerprobleme

Verfasst: 12. November 2016 15:35
von simon9220
Hallo zusammen,

ich habe ein extrem nerviges Problem und zwar möchte ich OpenCV in eine Qt-Applikation einbinden. Ich bekomme beim Kompilieren jedoch immer "undefined reference"-Fehler.

Ich habe schon Stunden mit googlen verbracht!

Mein .pro-File sieht so aus: (Hier sieht man auch, dass ich schon die absurdesten Dinge ausprobiert habe)

Code: Alles auswählen

#-------------------------------------------------
#
# Project created by QtCreator 2016-11-12T14:06:12
#
#-------------------------------------------------

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = qtCvSRCR
TEMPLATE = app


SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h

FORMS    += mainwindow.ui
#INCLUDEPATH += .
#INCLUDEPATH += /usr/local/include
#INCLUDEPATH += /usr/local/include/opencv2
#INCLUDEPATH += /usr/local/include/opencv2
#INCLUDEPATH += /usr/local/include/opencv2/core
#INCLUDEPATH += /usr/local/include/opencv2/highgui
#INCLUDEPATH += /usr/local/include/opencv2/imgproc
#INCLUDEPATH += /usr/local/include/opencv2/flann
#INCLUDEPATH += /usr/local/include/opencv2/photo
#INCLUDEPATH += /usr/local/include/opencv2/video
#INCLUDEPATH += /usr/local/include/opencv2/features2d
#INCLUDEPATH += /usr/local/include/opencv2/objdetect
#INCLUDEPATH += /usr/local/include/opencv2/calib3d
#INCLUDEPATH += /usr/local/include/opencv2/ml
#INCLUDEPATH += /usr/local/include/opencv2/contrib
##LIBS += `pkg-config opencv --cflags --libs`
##LIBS += -I/usr/local/include/opencv -I/usr/local/include -L/usr/local/lib -lopencv_shape -lopencv_stitching -lopencv_objdetect -lopencv_superres -lopencv_videostab -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio  -lopencv_video -lopencv_photo -lopencv_ml -lopencv_imgproc -lopencv_flann -lopencv_core
#LIBS += `pkg-config opencv --libs`
##INCLUDEPATH += /usr/local/lib/libdmtx.a;/usr/local/lib/libola.a;/usr/local/lib/libola.so;/usr/local/lib/libolaartnet.a;/usr/local/lib/libolaartnet.so;/usr/local/lib/libolaartnetconf.a;/usr/local/lib/libolaartnetconf.so;/usr/local/lib/libolacommon.a;/usr/local/lib/libolacommon.so;/usr/local/lib/liboladummy.a;/usr/local/lib/liboladummy.so;/usr/local/lib/libolae131.a;/usr/local/lib/libolae131.so;/usr/local/lib/libolae131conf.a;/usr/local/lib/libolae131conf.so;/usr/local/lib/libolaespnet.a;/usr/local/lib/libolaespnet.so;/usr/local/lib/libolaftdidmx.a;/usr/local/lib/libolaftdidmx.so;/usr/local/lib/libolagpio.a;/usr/local/lib/libolagpio.so;/usr/local/lib/libolagpiocore.a;/usr/local/lib/libolagpiocore.so;/usr/local/lib/libolakarate.a;/usr/local/lib/libolakarate.so;/usr/local/lib/libolakinet.a;/usr/local/lib/libolakinet.so;/usr/local/lib/libolamilinst.a;/usr/local/lib/libolamilinst.so;/usr/local/lib/libolaopendmx.a;/usr/local/lib/libolaopendmx.so;/usr/local/lib/libolaopenpixelcontrol.a;/usr/local/lib/libolaopenpixelcontrol.so;/usr/local/lib/libolaosc.a;/usr/local/lib/libolaosc.so;/usr/local/lib/libolapathport.a;/usr/local/lib/libolapathport.so;/usr/local/lib/libolarenard.a;/usr/local/lib/libolarenard.so;/usr/local/lib/libolasandnet.a;/usr/local/lib/libolasandnet.so;/usr/local/lib/libolaserver.a;/usr/local/lib/libolaserver.so;/usr/local/lib/libolaserverplugininterface.a;/usr/local/lib/libolaserverplugininterface.so;/usr/local/lib/libolashownet.a;/usr/local/lib/libolashownet.so;/usr/local/lib/libolaspi.a;/usr/local/lib/libolaspi.so;/usr/local/lib/libolaspicore.a;/usr/local/lib/libolaspicore.so;/usr/local/lib/libolastageprofi.a;/usr/local/lib/libolastageprofi.so;/usr/local/lib/libolatrigger.a;/usr/local/lib/libolatrigger.so;/usr/local/lib/libolauartdmx.a;/usr/local/lib/libolauartdmx.so;/usr/local/lib/libolausbdmx.a;/usr/local/lib/libolausbdmx.so;/usr/local/lib/libolausbpro.a;/usr/local/lib/libolausbpro.so;/usr/local/lib/libolausbproconf.a;/usr/local/lib/libolausbproconf.so;/usr/local/lib/libopencv_calib3d.so;/usr/local/lib/libopencv_core.so;/usr/local/lib/libopencv_features2d.so;/usr/local/lib/libopencv_flann.so;/usr/local/lib/libopencv_highgui.so;/usr/local/lib/libopencv_imgcodecs.so;/usr/local/lib/libopencv_imgproc.so;/usr/local/lib/libopencv_ml.so;/usr/local/lib/libopencv_objdetect.so;/usr/local/lib/libopencv_photo.so;/usr/local/lib/libopencv_shape.so;/usr/local/lib/libopencv_stitching.so;/usr/local/lib/libopencv_superres.so;/usr/local/lib/libopencv_ts.a;/usr/local/lib/libopencv_video.so;/usr/local/lib/libopencv_videoio.so;/usr/local/lib/libopencv_videostab.so;/usr/local/lib/libzxing.a;
##LIBS += /usr/local/lib/libdmtx.a;/usr/local/lib/libola.a;/usr/local/lib/libola.so;/usr/local/lib/libolaartnet.a;/usr/local/lib/libolaartnet.so;/usr/local/lib/libolaartnetconf.a;/usr/local/lib/libolaartnetconf.so;/usr/local/lib/libolacommon.a;/usr/local/lib/libolacommon.so;/usr/local/lib/liboladummy.a;/usr/local/lib/liboladummy.so;/usr/local/lib/libolae131.a;/usr/local/lib/libolae131.so;/usr/local/lib/libolae131conf.a;/usr/local/lib/libolae131conf.so;/usr/local/lib/libolaespnet.a;/usr/local/lib/libolaespnet.so;/usr/local/lib/libolaftdidmx.a;/usr/local/lib/libolaftdidmx.so;/usr/local/lib/libolagpio.a;/usr/local/lib/libolagpio.so;/usr/local/lib/libolagpiocore.a;/usr/local/lib/libolagpiocore.so;/usr/local/lib/libolakarate.a;/usr/local/lib/libolakarate.so;/usr/local/lib/libolakinet.a;/usr/local/lib/libolakinet.so;/usr/local/lib/libolamilinst.a;/usr/local/lib/libolamilinst.so;/usr/local/lib/libolaopendmx.a;/usr/local/lib/libolaopendmx.so;/usr/local/lib/libolaopenpixelcontrol.a;/usr/local/lib/libolaopenpixelcontrol.so;/usr/local/lib/libolaosc.a;/usr/local/lib/libolaosc.so;/usr/local/lib/libolapathport.a;/usr/local/lib/libolapathport.so;/usr/local/lib/libolarenard.a;/usr/local/lib/libolarenard.so;/usr/local/lib/libolasandnet.a;/usr/local/lib/libolasandnet.so;/usr/local/lib/libolaserver.a;/usr/local/lib/libolaserver.so;/usr/local/lib/libolaserverplugininterface.a;/usr/local/lib/libolaserverplugininterface.so;/usr/local/lib/libolashownet.a;/usr/local/lib/libolashownet.so;/usr/local/lib/libolaspi.a;/usr/local/lib/libolaspi.so;/usr/local/lib/libolaspicore.a;/usr/local/lib/libolaspicore.so;/usr/local/lib/libolastageprofi.a;/usr/local/lib/libolastageprofi.so;/usr/local/lib/libolatrigger.a;/usr/local/lib/libolatrigger.so;/usr/local/lib/libolauartdmx.a;/usr/local/lib/libolauartdmx.so;/usr/local/lib/libolausbdmx.a;/usr/local/lib/libolausbdmx.so;/usr/local/lib/libolausbpro.a;/usr/local/lib/libolausbpro.so;/usr/local/lib/libolausbproconf.a;/usr/local/lib/libolausbproconf.so;/usr/local/lib/libopencv_calib3d.so;/usr/local/lib/libopencv_core.so;/usr/local/lib/libopencv_features2d.so;/usr/local/lib/libopencv_flann.so;/usr/local/lib/libopencv_highgui.so;/usr/local/lib/libopencv_imgcodecs.so;/usr/local/lib/libopencv_imgproc.so;/usr/local/lib/libopencv_ml.so;/usr/local/lib/libopencv_objdetect.so;/usr/local/lib/libopencv_photo.so;/usr/local/lib/libopencv_shape.so;/usr/local/lib/libopencv_stitching.so;/usr/local/lib/libopencv_superres.so;/usr/local/lib/libopencv_ts.a;/usr/local/lib/libopencv_video.so;/usr/local/lib/libopencv_videoio.so;/usr/local/lib/libopencv_videostab.so;/usr/local/lib/libzxing.a;
#LIBS += `echo $(pkg-config --libs opencv)`
INCLUDEPATH += /usr/local/include/
LIBS += /usr/local/lib/libopencv_core.so.2.4.13
LIBS += /usr/local/lib/libopencv_highgui.so.2.4.13
Mein Code in der main.cpp sieht folgendermaßen aus: (Habe ich nur zum Test dort eingefügt)

Code: Alles auswählen

#include "mainwindow.h"
#include <QApplication>
#include <opencv2/highgui.hpp>
#include <opencv2/core.hpp>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    // read an image
           cv::Mat image= cv::imread("img.jpg");
           // create image window named "My Image"
           cv::namedWindow("My Image");
           // show the image on window
           cv::imshow("My Image", image);
           // wait key for 5000 ms
           cv::waitKey(5000);
    MainWindow w;
    w.show();

    return a.exec();
}
Vielen Dank für Euere Hilfe!

Re: OpenCV mit Qt Linkerprobleme

Verfasst: 12. November 2016 16:47
von Christian81
Und wie genau lautet der Fehler? Undefined reference auf was?

Re: OpenCV mit Qt Linkerprobleme

Verfasst: 12. November 2016 17:11
von simon9220
Es waren undefined references auf die entsprechenden Funktionen, die ich genutzt hab. Ich habe jedoch den Fehler gefunden!

So sieht das Ganze jetzt aus:

Code: Alles auswählen

#-------------------------------------------------
#
# Project created by QtCreator 2016-11-12T14:06:12
#
#-------------------------------------------------

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = qtCvSRCR
TEMPLATE = app


SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h

FORMS    += mainwindow.ui

INCLUDEPATH += "//usr//local//include//"


LIBS += //usr//local//lib//libopencv_core.so
LIBS += /usr/local/lib/libopencv_imgproc.so
LIBS += //usr//local//lib//libopencv_highgui.so

Code: Alles auswählen

#include "mainwindow.h"
#include <QApplication>
#include <opencv2/opencv.hpp>

... usw.
Der Fehler lag in meinen Includes! Scheinbar soll man mittlerweile einfach die opencv.hpp einbinden. Habe ich aus Zufall gefunden... Vielen Dank dennoch! :)

Re: OpenCV mit Qt Linkerprobleme

Verfasst: 12. November 2016 17:16
von Christian81
Die Info ist ok, hätte mir aber trotzdem nicht weitergeholfen - es ist wichtig die genaue Fehlermeldung zu sehen - undefined reference kann ja alles sein.
Nochwas: Warum '//' überall in der pro-Datei

Re: OpenCV mit Qt Linkerprobleme

Verfasst: 12. November 2016 17:47
von simon9220
Diese Doppelslashs waren auch nur ein Versuch, den Fehler zu finden. Funktioniert wohl sowohl mit einfachen, als auch mit doppelten Slashes. Ich hätte Dir die genauen Ausgaben natürlich gepostet, wenn sie zum entsprechenden Zeitpunkt noch da gewesen wären.