Ubuntu18.04 QT5.10.12与Opencv4.1.0 安装与配置
1.软件的下载
1.1 Qt下载
官网安装包下载安装(下载版本选择).
点开链接,根据示例路径(以5.12版本为例)下载安装包:
/5.12/5.12.10/qt-opensource-linux-x64-5.12.10.run
1.2 OpenCV下载
OpenCV官方下载如下: 下载.
本博客下载OpenCV4.1.0,如下:
找到需要下载的版本按Sources进行下载
2.软件的安装和配置
2.1 Qt的安装
安装: 在安装包位置右键打开终端(修改对应的软件包权限)
sudo chmod +x qt-opensource-linux-x64-5.12.0.run
sudo ./qt-opensource-linux-x64-5.12.0.run
创建帐号可以直接skip(可以通过拔掉网线skip),选择安装组件
配置系统路径
sudo vim /etc/bash.bashrc
在文件的最后添加如下内容
export QTDIR=/opt/Qt5.12.10/5.12.10/gcc_64
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
保存(:wq)后执行如下命令
source /etc/bash.bashrc
测试配置
echo $PATH
输出如下内容:
/opt/ros/melodic/bin:/opt/Qt5.12.10/5.12.10/gcc_64/bin:/home/zkk/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
2.2 OpenCV的安装
配置前先下载cmake
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get update
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev
2.2.1 QT+Opencv配置
mkdir build
cd build
cmake -D BUILD_SHARED_LIBS=ON -D BUILD_TESTS=OFF -D CMAKE_BUILD_TYPE=RELEASE -D WITH_PROTOBUF=OFF -D CMAKE_INSTALL_PREFIX=/usr/local ..
make
sudo make install
sudo make
sudo make install
sudo gedit /etc/ld.so.conf.d/opencv.conf
//加入 /usr/local/lib,如下图
sudo ldconfig
接着配置环境变量
sudo gedit /etc/bash.bashrc
在最底端写入 :
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
终端输入:
sudo ldconfig
sudo cp /usr/local/include/opencv4/opencv2 /usr/local/include -r
配置好后,进行测试:
3.代码实测
.pro文件:
TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle
CONFIG -= qt
SOURCES += main.cpp
INCLUDEPATH += /usr/local/include \
/usr/local/include/opencv
/usr/local/include/opencv2
LIBS += /usr/local/lib/libopencv_* \
测试能否调用摄像头:
#include <iostream>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
using namespace std;
using namespace cv;
int main()
{
VideoCapture capture (0);
Mat src;
while(1)
{
capture >> src;
imshow("capture",src);
char(key)=(char)waitKey(1);
if(key==27)
break;
}
return 0;
}