带Qt的OpenCV:程序意外完成

OpenCV with Qt: The program has unexpectedly finished

本文关键字:意外 程序 Qt OpenCV      更新时间:2023-10-16

我正在尝试在windows 8 64位上使用Qt Creator 2.7.0(Qt 5.0.2)配置OpenCV。在执行程序时,我得到以下错误:

程序意外地完成了。

这是我的主.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();
}

我的.pro文件是

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
}

环境变量为:

OPENCV_DIR:C:\OPENCV\OPENCV\build\x64\mingw路径:G: \5.0.2\Tools\MinGW\bin;G: \Qt\5.0.2\mingw47_32\bin

可能是什么问题?

如果可能,我建议您使用OpenCV 2.x API。错误处理更好。

这将是cv::Mat image=cv::imread("E:\lena.jpg");

如果图像为空,则表示路径错误。

此外,请确保opencv dll位于可执行文件(core、highgui和imgproc)的路径中。

您可能需要更改

-lopencv_core244 
-lopencv_highgui244 
-lopencv_imgproc244

-lopencv_core244d 
-lopencv_highgui244d 
-lopencv_imgproc244d
  • 注意每个lib末尾的"d"(如果要在调试中生成)

问题解决了吗?

您是否尝试添加系统("暂停");在返回a.exec()之后?

只是一些额外的注意事项:

也可以尝试

try 
{
...
}
catch (Exception e)
{
...
}

看看你是否能找到错误

第三,检查lena.jpg 的文件权限

最后,看看是否可以使用路径E:\lena.jpg