本篇教程是介绍qt的opencv配置,不是作业,如果作业要做qt+opencv的,可以参考这个配置,然后根据自己的想法修改项目文件。
第三章make耗时1~2小时
按照本篇做完,就可以百度图像处理相关的C++版的项目,移植到自己的项目文件里,再在主窗口加几个功能按钮、显示label,一个作业就完成了。我觉得把数字图像处理pycharm或者matlab作业改成c++版本的也行。
如果没有安装Qt的可以参照Linux版Qt5.12.0安装教程,ubuntu16.04
先安装这些,下载慢或者下载失败可以试试换镜像或者连
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
如果报错信息中最后一行有“–fix-missing”那就加上
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev --fix-missing
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
源项目地址:
https://github.com/opencv/opencv
Github 镜像仓库 :
https://gitcode.net/opencv/opencv?utm_source=csdn_github_accelerator
下面使用git指令克隆镜像仓库
我是在/home/steve/文件夹下运行的
git clone https://gitcode.net/opencv/opencv.git
克隆完成后进入opencv文件夹,新建build文件夹,进入build文件夹执行cmake
cd opencv
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
sudo make
sudo sh -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
sudo ldconfig
在.pro文件中加入以下代码
INCLUDEPATH += /usr/local/include \
/usr/local/include/opencv \
/usr/local/include/opencv4
LIBS += /usr/local/lib/libopencv_highgui.so \
/usr/local/lib/libopencv_core.so \
/usr/local/lib/libopencv_imgproc.so \
/usr/local/lib/libopencv_imgcodecs.so
LIBS对应的/user/local/lib文件夹,可以去看看,如果你的项目用到了摄像头,就需要再加一行/usr/local/lib/libopencv_videoio.so
如果你的项目用到了深度神经网络,就需要再加一行/usr/local/lib/libopencv_dnn.so;
#include
#include
#include
using namespace cv;
int main()
{
Mat img = imread("/home/steve/qtproject/test/pika.jpg");
imshow("pika", img);
waitKey(0);
return 0;
}
imread中的图片路径。如果要用相对路径pika.png,就需要把图片复制到下面Debug文件夹中。上面的代码使用绝对路径。
1可以复制上面的代码,覆盖掉main.cpp
2也可以只复制红框中的代码加进去,这样运行会出现两个窗口,一个是主窗口,另一个是opencv 的imshow打开的窗口
如果你的项目有多个cpp文件会用到这几个#include 和namespace,你可以把第一个红框的代码复制到Headers 里面的头文件hpp中,就不用重复引用了。
对主窗口MainWindow的界面设计方法大概有两种
一种是 点击Forms中的 ui文件,进入相应的设计界面,拖拽组件,设置样式、槽函数。
另一种是在mainwindow.cpp中使用代码添加组件
讲一下第二种比如
新建一个label,需要#include
Qlabel的使用方法按住F1即可查看帮助文档,所有函数都在帮助文档里有
setWindowTitle("QT5.12+OpenCV4+TestOpenImg");
Mat src = imread("/home/steve/qtproject/test/pika.jpg");
Mat img;
cvtColor(src, img, COLOR_BGR2RGB);
QLabel *label=new QLabel(this);
label->setPixmap(QPixmap::fromImage(QImage(img.data, img.cols, img.rows, img.step, QImage::Format_RGB888)));
label->adjustSize();