显示图片
上图就是本次示例结果,本次的示例还是使用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