Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

OpenCV with Qt: The program has unexpectedly finished

I am trying to configure OpenCV with Qt Creator 2.7.0 (Qt 5.0.2) on windows 8 64bit. While executing my program, I get the following error:

The program has unexpectedly finished.

This is my main.cpp

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

using namespace cv;
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    IplImage *image = cvLoadImage("E:\\lena.jpg"); //If this is removed, the program runs OK
    return a.exec();
}

My .pro file is

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = untitled1
TEMPLATE = app


SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h

FORMS    += mainwindow.ui

unix:!mac {
    message("* Using settings for Unix/Linux.")
    INCLUDEPATH += /usr/local/include/opencv

    LIBS += -L/usr/local/lib/ \
        -lopencv_core \
        -lopencv_highgui \
        -lopencv_imgproc
}

## OpenCV settings for Mac OS X
macx {
    message("* Using settings for Mac OS X.")
    INCLUDEPATH += /usr/local/include/opencv

    LIBS += -L/usr/local/lib/ \
        -lopencv_core \
        -lopencv_highgui \
        -lopencv_imgproc
}

## OpenCV settings for Windows and OpenCV
win32 {
    message("* Using settings for Windows.")
    INCLUDEPATH += "C:\\OpenCV\\opencv\\build\\include" \
                   "C:\\OpenCV\\opencv\\build\\include\\opencv" \
                   "C:\\OpenCV\\opencv\\build\\include\\opencv2"

    LIBS += -L"C:\\OpenCV\\opencv\\build\\x64\\mingw\\lib" \
        -lopencv_core244 \
        -lopencv_highgui244 \
        -lopencv_imgproc244
}

Environment Variables are:

OPENCV_DIR:C:\OpenCV\opencv\build\x64\mingw Path: G:\5.0.2\Tools\MinGW\bin;G:\Qt\5.0.2\mingw47_32\bin

What could be the problem ?

like image 531
krammer Avatar asked Nov 29 '25 17:11

krammer


2 Answers

I suggest you use the OpenCV 2.x API if possible. The error handling is better.

This would be cv::Mat image = cv::imread("E:\lena.jpg");

If the image is empty, it means you have the wrong path.

Also, make sure the opencv dll are in the path of your executable (core, highgui and imgproc).

like image 56
Jean-Philippe Jodoin Avatar answered Dec 01 '25 08:12

Jean-Philippe Jodoin


You might need to change

-lopencv_core244 \
-lopencv_highgui244 \
-lopencv_imgproc244

to

-lopencv_core244d \
-lopencv_highgui244d \
-lopencv_imgproc244d
  • note 'd' at the end of each lib (if you are to build in debug)
like image 24
Anuruddha Hettiarachchi Avatar answered Dec 01 '25 08:12

Anuruddha Hettiarachchi



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!