Search code examples
c++qtopencvloadimage

OpenCV and Qt 5.3 weird message


I'm trying to run (in Qt, C++) the following code that uses OpenCV:

.pro file:

QT       += core
QT       -= gui

TARGET = testOpenCV2
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app

SOURCES += main.cpp

INCLUDEPATH += C:\opencv\build\include
LIBS += C:\opencv\release\bin\libopencv_core300.dll
LIBS += C:\opencv\release\bin\libopencv_highgui300.dll
LIBS += C:\opencv\release\bin\libopencv_imgcodecs300.dll
LIBS += C:\opencv\release\bin\libopencv_imgproc300.dll

main.cpp file:

#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>

using namespace cv;

int main(int argc, char *argv[])
{
    cv::Mat image = cv::imread("pic.jpg", CV_LOAD_IMAGE_COLOR);
    cv::namedWindow("My Image", WINDOW_AUTOSIZE);
    cv::imshow("My Image", image);
    cv::waitKey(0);

    return 0;
}

But I'm getting the following message:

exited with code -1073741515

And sometimes I get the following message:

Cannot obtain a handle to the inferior: The parameter is incorrect.

and nothing is happening.

Can anyone help me please?

I'm new in Qt and I don't know what's going on.


Solution

  • You are not using Qt at all (except you try link QtCore). For running a QtApplication you would at least need to call QCoreApplication.

    #include <QCoreApplication>
    
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
    
        // Some code here
        // QMainWindow w;
        // w.show();
    
        return a.exec();
    }
    

    Creating a non Qt application you would change your pro-file to (omit the QT at all):

    TEMPLATE = app
    CONFIG += console c++11
    CONFIG -= app_bundle
    CONFIG -= qt
    
    SOURCES += main.cpp
    
    INCLUDEPATH += C:\opencv\build\include
    LIBS += C:\opencv\release\bin\libopencv_core300.dll
    LIBS += C:\opencv\release\bin\libopencv_highgui300.dll
    LIBS += C:\opencv\release\bin\libopencv_imgcodecs300.dll
    LIBS += C:\opencv\release\bin\libopencv_imgproc300.dll
    

    This way you also won't need ''QCoreApplication''