Qt 使用 opencv 打开图片闪退出现 exited with code 3

笔记 · 2023-09-18 · 319 人浏览
Qt 使用 opencv 打开图片闪退出现 exited with code 3

  原本只想简单测试 opencv(以下简称cv2) 通过 cmake 编译然后通过 Qt 能否运行成功。成功后就想试试做一个图片查看器,于是就遇到该错误:闪退??然后底部弹出 \..\*.exe exited with code 3

所使用Qt版本为5.14.2,Qt Creator版本为4.11.1,opencv版本为3.4.6。

将cv2引入到Qt5

前提是cv2(bin文件夹)添加到环境变量中,这里不作赘述。

1. 添加 pro 工程文件

  只需要在 pro 文件最后加上以下两行代码即可。这里需要注意不光要编译成功,一定要安装cv2到本地,找到自己电脑相对应路径,在当前路径下打开 cmd,输入mingw32-make install 后当前文件夹就会出现 install 文件夹。
2023-09-18T03:25:31.png

## 包含路径
INCLUDEPATH += D:\codeEnvironment\visiondev\opencv_build\install\include
## 库文件
LIBS += D:\codeEnvironment\visiondev\opencv_build\lib\libopencv_*.a

2. 测试代码

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <opencv2/core.hpp>  // Mat
#include <opencv2/highgui.hpp> // namedWindow imshow waitKey
#include <opencv2/imgproc.hpp> // imread
#include <QDebug>

// 引入 cv 命名空间
using namespace cv;

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    // 测试代码  imread 最好使用绝对路径
    Mat image = imread("D:\\photo\\TS.jpg");
    // 窗口名  +  自动大小
    namedWindow("Image Window", WINDOW_AUTOSIZE);
    imshow("Display Image", image);
    waitKey();
}

MainWindow::~MainWindow()
{
    delete ui;
}

测试结果如下:
2023-09-18T03:47:01.png


闪退解决:中文路径

  修改上述代码成为一个打开图片的事件:

void MainWindow::on_pushButton_clicked()
{
    QString imgPath = QFileDialog::getOpenFileName(this, "打开图片", "D:/photo/", "(打开图片(*.png *.jpg *.bmp))");
    // 读取:把路径转换成一个 Mat 对象
    Mat image = imread(imgPath.toStdString());
    // 窗口名  +  自动大小
    namedWindow("Image Window", WINDOW_AUTOSIZE);
    imshow("Display Image", image);
    waitKey();

  点击按钮运行选择图片完成后就出现闪退(有时候会无响应),并弹出以下代码:
2023-09-18T03:53:38.png
  然后通过网上资料查看,都说是路径出现了问题,于是我加上了这两行代码:

// 判断文件是否存在::Qt
    QFile file(imgPath);
    if (!file.exists()) 
    {
        qDebug() << "文件不存在:" << imgPath;
        return;
    }

// 判断文件路径是否为空::cv2
    if(image.empty())
    {
        qDebug() << "无法加载图像:" <<  imgPath;
        return;
    }

  再次运行出现的问题如下,输出反馈中路径出现了中文路径。修改掉即可解决。以上仅供参考。如若有任何问题和建议,欢迎共同探讨!

2023-09-18T04:01:31.png

可能遇到的问题

  • opencv 要安装后在再集成到 Qt 库
  • 将 opencv 添加到环境变量
  • 尽量使用英文路径
Qt 实验 cv2
  1. xxcheng 2023-09-18

    点赞

Theme Jasmine by Kent Liao

本网站由 又拍云 提供CDN加速/云存储服务

鄂ICP备2023005457号    鄂公网安备 42011302000815号