学习笔记:在linux-ubuntu中OpenCV在QT5中的配置
这里写自定义目录标题
一、背景介绍
网上有许多的OpenCV在QT中的配置教程,但随后会发现,每一篇教程的方法都有所不同。这可能是OpenCV版本的更替造成的。本文梳理了一下配置流程还有自己的理解。
二、创建一个QT工程
新建qt工程
项目名称为samp(随便起),然后一路点击下一步
创建好的工程如下图所示
三、在pro文件中添加代码
在pro文件中需要添加OpenCV头文件的路径,还有OpenCV的库
3.1 找到你的OpenCV头文件路径
头文件均为.hpp或者.h格式,如何找到他们呢?我们可以通过查找其中的一个文件(例如bgsegm.hpp)
在命令行中输入
locate bgsegm.hpp
可以得到
所以头文件的路径为/usr/local/include/opencv4
3.2 找到你的OpenCV库
库所在的文件夹里会有一大堆.so格式的文件,在我的ubuntu里,库文件在/usr/local/lib/下
3.3 输入代码
INCLUDEPATH += /usr/local/include/opencv4 #添加头文件路径
LIBS += /usr/local/lib/libopencv_* #添加库
(libopencv_*中的“ * ”表示省略,这行代码将opencv的所有库添加了进去)
四、写一个图片显示程序
本部分引用https://blog.****.net/qq_31674679/article/details/80026066 作者:Peace_day
OpenCV在QT中的库基本配置完成,现在通过一个简单的图片显示程序加深理解。
4.1 设计界面
双击mainwindow.ui
进入交互界面,并将一个Push Button和一个Label拖进主窗口
4.2 编写mainwindow.cpp的代码
右键点击PushButton,再点击Go to slot,选择clicked(),点击OK
在函数体里输入(函数名可能不一样,你原本是哪样就是哪样,不需要做修改)
QString fileName=QFileDialog::getOpenFileName(this,tr("Open Image"),
".",tr("Image Files(*.png *.jpg *.jpeg)"));
image=cv::imread(fileName.toStdString());
QImage img = QImage((const unsigned char*)(image.data),
image.cols, image.rows, QImage::Format_RGB888);
//设定图像大小自适应label窗口的大小
img = img.scaled(ui->label->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
ui->label->setPixmap(QPixmap::fromImage(img));
4.3 编写mainwindow.h头文件中的代码
转到mainwindow.h
#include <opencv2/imgproc.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/core/utility.hpp>
#include <QFileDialog>
cv::Mat image;
这里可以加深理解,我们需要调用的OpenCV的头文件为imgproc.hpp、highgui.hpp和utility.hpp。
以imgproc.hpp为例,这里添加的头文件路径为opencv2/imgproc.hpp,结合3.3节添加的头文件路径/usr/local/include/opencv4,
则文件的最终路径为/usr/local/include/opencv4/opencv2/imgproc.hpp
4.4 运行程序
先qmake一下
再点击左下角的绿色三角运行程序
结束