Bootstrap

基于Qt 的graphicsView + opencv显示图片

显示图片

在这里插入图片描述

上图就是本次示例结果,本次的示例还是使用graphicsView显示opencv处理后的image图像

  • 使用qt 创建Qt widgets application项目
  • 界面文件就添加一个graphicsView,去掉菜单栏、状态栏
  • 右键项目名添加库,外部库,把本地opencv库的路径填上
  • 在这里插入图片描述
  • 自动生成graphicsViewDemo.pro代码
  • 在这里插入图片描述
  • 之后在mainwindow.cpp文件中添加如下代码
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //
    Mat srcImage = imread("D:\\codeSpace\\test.jpg");
    int width = srcImage.cols;
    int height = srcImage.rows;
    cvtColor(srcImage, srcImage, COLOR_BGR2RGB);
    QImage disImage = QImage(srcImage.data, width, height,
    						QImage::Format_RGB888);
    QGraphicsScene *scene = new QGraphicsScene;
    ui->graphicsView->setScene(scene);
    ui->graphicsView->show();
    scene->addPixmap(QPixmap::fromImage(disImage));
}

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

基于分开库显示图片

上面的示例是使用整合库来操作的,但是整合库很大,有53.1M,还是比较大的,所以这里采用分开库的方式再实现一遍。
Note:本次的实现是基于32位库实现的。
demo_opencv.pro文件添加如下

# imread等函数
unix|win32: LIBS += -L$$PWD/../../../ProgramFiles/opencv-4.5.4/x32/mingw/lib/ -llibopencv_imgcodecs454.dll
# cvtColor等函数
unix|win32: LIBS += -L$$PWD/../../../ProgramFiles/opencv-4.5.4/x32/mingw/lib/ -llibopencv_imgproc454.dll
# cv::Mat库
unix|win32: LIBS += -L$$PWD/../../../ProgramFiles/opencv-4.5.4/x32/mingw/lib/ -llibopencv_core454.dll

INCLUDEPATH += $$PWD/../../../ProgramFiles/opencv-4.5.4/include
DEPENDPATH += $$PWD/../../../ProgramFiles/opencv-4.5.4/include

mainwindow.cpp文件内容如下

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //
    Mat srcImage = imread("D:\\codeSpace\\test.jpg");
    int width = srcImage.cols;
    int height = srcImage.rows;
    cvtColor(srcImage, srcImage, COLOR_BGR2RGB);
    QImage disImage = QImage(srcImage.data, width, height,
                            QImage::Format_RGB888);
    QGraphicsScene *scene = new QGraphicsScene;
    ui->graphicsView->setScene(scene);
    ui->graphicsView->show();
    scene->addPixmap(QPixmap::fromImage(disImage));
}

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

发布程序

在这里插入图片描述
运行程序时,要切换到Release模式。

既然做完了一个程序,总不能自己留着发霉吧,总要发布出去,这里发布程序总共是3步。

windeployqt

在系统的开始菜单中打开Qt 5.12.12 (MinGW 7.3.0 32-bit),输入如下指令

.\bin\windeployqt.exe \
	--release \
	--no-translations \   # 用不到多语言国际化,可以删除它,以节省大小
	--no-angle \
	--no-opengl-sw \  # 软件模拟OpenGL,可删
	D:\codeSpace\qt\toRelease2\demo_opencv.exe

hap-depends

用于检测可执行文件,还需要哪些依赖库,缺哪些库,就把相关库copy到可执行文件所在目录即可。
在这里插入图片描述
打开后一片黄,这是缺了很多文件,我们挨个去寻找拷贝吧

  • opencv路径,D:\ProgramFiles\opencv-4.5.4\x32\mingw\bin
    • libopencv_core454.dll
    • libopencv_imgcodecs454.dll
    • libopencv_imgproc454.dll
  • Note:qt 部分的黄色先不管,先copy到另外一台win10电脑执行看看

其他电脑

基于上面2步做好的程序,copy到第3方win电脑上运行,若缺少库,就再去寻找与copy,依次反复,就能做出一个可以release的版本了

–end

;