Ubuntu 18 下Qt5.12编译opencv3.4+配置(超详细)


尝试过很多种编译opencv的方法,这是成功率最高的一种 。。。。。。。。。。。。。

1、准备

1.1.确保正确安装Qt,并可以正常运行示例程序。

安装GCC和G++,这是必须的!

sudo apt install gcc
sudo apt install g++

1.1.1下载Qt

下载地址

http://download.qt.io/archive/qt/

1.1.2 安装Qt

跳转到安装包所在的目录,执行:(注意安装包的名字!)

sudo chmod 777 qt-opensource-linux-x64-5.12.0.run 
./qt-opensource-linux-x64-5.12.0.run 

1.2 安装cmake

sudo apt install cmake-qt-gui 

安装后打开Qt确认如下图:
在这里插入图片描述

1.3下载opencv

地址:

https://opencv.org/releases.html

下载 Sources 并解压。

2、编译

2.1 载入opencv

打开Qt–文件–打开文件或项目,选择解压的opencv源码里面的CMakeists.txt
在这里插入图片描述
然后选择Configure,这里按需要选择,没有特殊需求用Default就行,修改下编译的目录,这个目录是用来装编译过程中文件的地方,编译成功后可以删掉。
在这里插入图片描述Configure Project开始载入opencv。
之后会出现卡住的问题,这是因为这里下载的文件较大,主要是网络的问题。。。。。。。。。。。
网络好的2.1.0这一步可以忽略。

2.1.0解决编译中卡住的问题

问题如图(’概要信息‘里面的):
在这里插入图片描述
打开解压的opencv源码里面的3rdparty/ippicv/ippicv.cmake文件
将链接

"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/"

替换成

"https://github.com/opencv/opencv_3rdparty/tree/ippicv/master_20180723/ippicv/"

注意替换的链接里面文件的版本!!!!
查看文件版本的方法:
打开3rdparty/ippicv/ippicv.cmake文件
在这里插入图片描述
注意需要的版本的文件名,然后到这个网站去找

https://github.com/opencv/opencv_3rdparty/branches/all

目的就是让编译器能找到需要的文件
然后关掉Qt重新载入可以看到:
在这里插入图片描述
载入成功:
在这里插入图片描述

2.2配置编译

2.2.1 CMake

点击项目
在CMake下找到CMAKE_INSTALL_PREFIX修改编译后的库文件和头文件的存放目录
在这里插入图片描述修改后,单击Apply Configuration Changes粗体变成斜体后,修改生效,其他项目如果没有特殊需求保持默认即可。

2.2.2 构建步骤

点击详情,选择install
在这里插入图片描述

2.2.3开始编译

点击左下角的锤子,开始编译啦!!
在这里插入图片描述
编译结果:
在这里插入图片描述在这里插入图片描述

3、测试

使用opencv库之前必须添加环境变量,否则会出现如下错误
在这里插入图片描述添加环境变量方法:
跳转到目录/etc/ld.so.conf.d/
新建一个opencv.conf

sudo vim opencv.conf 

添加一句,这个路径就是安装编译好的opencv库的路径

home/hello/opencv/opencv3.4/lib

保存之后

sudo ldconfig -v

在显示的库的目录里面看是否有opencv的库文件,如果有则添加成功
在这里插入图片描述新建Qt工程
在.pro文件中添加

INCLUDEPATH += /home/hello/opencv/opencv3.4/include \
               /home/hello/opencv/opencv3.4/include/opencv \
               /home/hello/opencv/opencv3.4/include/opencv2

LIBS += /home/hello/opencv/opencv3.4/lib/libopencv_*

main.cpp中

#include "mainwindow.h"
#include <QApplication>
#include "opencv2/opencv.hpp"
#include "cv.h"

using namespace cv;

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    Mat image = imread("test.jpg");

    imshow("test", image);

    waitKey(0);

    return a.exec();
}

结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/dongdong_csdn/article/details/85217292