在Ubuntu20.04下配置C++/Opencv3.4.7
并用xmake
构建项目并且运行
参考文章 安装OpenCvC++库
- Opencv的环境配置
1.准备工作
ubuntu20.04
cmake>=3.10.2
unzip
mlocate包
更新包
sudo apt update
sudo apt upgrade
简单安装cmake
sudo apt install cmake
此安装方式安装的cmake可能不是最新的
查看cmake版本
cmake -version
安装mlocate
sudo apt-get install mlocate
2.编译
安装依赖
sudo apt install openssl libssl-dev mingetty zip unzip git curl vim gcc g++ -y
sudo apt install socat zsh curl git vim make cmake -y
sudo apt install autojump -y
sudo apt-get install -y libtiff5-dev libeigen3-dev
sudo apt install -y git gcc g++ make cmake libgtk2.0-dev libgoogle-glog-dev
sudo apt install -y libtesseract-dev libgtkglext1 libgtkglext1-dev ffmpeg
sudo apt install -y libv4l-0 libv4l-dev
sudo apt install -y liblapacke-dev libopenblas-dev libgtk-3-dev libgstreamer-plugins-base1.0-dev
sudo apt install -y libgstreamer1.0-dev libavresample-dev libgphoto2-dev libdc1394-22-dev
sudo apt-get install -y build-essential make cmake cmake-curses-gui git g++ pkg-config curl
sudo apt-get install -y libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libeigen3-dev libglew-dev libgtk2.0-dev
sudo apt-get install -y libtbb2 libtbb-dev v4l-utils qv4l2 v4l2ucp
sudo apt-get install -y libdc1394-22-dev libxine2-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
sudo apt-get install -y libjpeg8-dev libjpeg-turbo8-dev libtiff-dev libpng-dev
sudo apt-get install -y libxvidcore-dev libx264-dev libgtk-3-dev
sudo apt-get install -y libatlas-base-dev libopenblas-dev liblapack-dev liblapacke-dev gfortran
sudo apt-get install -y qt5-default
sudo apt-get install -y python3-dev python3-testresources
sudo apt-get install -y libcanberra-gtk-module
下载源代码
选择合适的opencv版本,contrib库版本需与opencv版本相同,以目前使用的3.4.7为例,下载zip压缩包
opencv3.4.7
OpenCV-Contrib
使用shell将压缩包下载到文件夹内,需要将[version_id]改为需要下载的版本号
cd ~
wget -O opencv.zip https://github.com/opencv/opencv/archive/[version_id].zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/[version_id].zip
unzip opencv.zip
unzip opencv_contrib.zip
mv opencv-[version_id] opencv
mv opencv_contrib-[version_id] opencv_contrib
比如我下载的是3.4.7版本,那么
cd ~
wget -O opencv.zip https://github.com/opencv/opencv/archive/3.4.7.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/3.4.7.zip
unzip opencv.zip
unzip opencv_contrib.zip
mv opencv-[version_id] opencv
mv opencv_contrib-[version_id] opencv_contrib
配置cmake并编译OpenCV
cd ~/opencv
mkdir build
cd build
Cmake编译命令
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
此处路径必须填写正确,否则编译测试通过后代码仍然可能编译报错,缺少xxx文件
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D ENABLE_NEON=OFF \
-D ENABLE_FAST_MATH=ON \
-D WITH_GSTREAMER=ON \
-D WITH_LIBV4L=ON \
-D BUILD_opencv_python2=OFF \
-D BUILD_opencv_python3=ON \
-D BUILD_TESTS=OFF \
-D BUILD_PERF_TESTS=OFF \
-D BUILD_EXAMPLES=OFF \
-D WITH_TBB=ON \
-D BUILD_opencv_world=OFF \
-D BUILD_opencv_xfeatures2d=OFF \
-D WITH_OPENGL=ON \
-D WITH_GTK_2_X=ON \
-D OPENCV_ENABLE_NONFREE=ON \
-D EIGEN_INCLUDE_PATH="/usr/include/eigen3" \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
-D WITH_XINE=ON \
-D WITH_GDAL=ON \
..
make -j8
此处8为最大支持线程数,一般为cpu数两倍,一般情况下为4核8线程,线程数过多时可能减低编译效率,设置导致编译报错。
make时如看到
$ make
make: * No targets specified and no makefile found. Stop.
此时问题为Cmake出现问题,请查看Cmake报错信息
3.安装
编译成功后
sudo make install
sudo ldconfig
sudo vim /etc/bash.bashrc
在末尾添加,此处是vim编辑器,如果不会使用请百度“如何在vim末尾添加”“vim编辑器如何保存退出”
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
保存退出
source /etc/bash.bashrc
sudo updatedb
配置生效
查看Linux opencv安装库
pkg-config opencv --libs
查看安装版本
pkg-config opencv --modversion
4. xmake的安装和使用
安装xmake
可以参考xmake官网
xmake: 轻量级跨平台C/C++构建工具
使用wget安装
bash <(wget https://xmake.io/shget.text -O -)
构建文件
在任务目录中创建好c/c++文件后,使用终端运行
xmake
第一次使用需要输入y
构建项目
发现工作区多了很多文件以及目录
修改配置
如果这时候运行带有opencv
库的C文件,仍然会报错,如果没有,则不需要再往下看了。
需要我们配置一下lua
文件
在xmake.lua
文件中,改写为如下代码
add_requires("opencv")
target("test")
set_kind("binary")
add_rules("mode.debug","mode.release")
add_packages("opencv")
add_files("test.cpp") //注意,这个函数的参数需要是你当时创建的cpp文件名
再次在终端中编译文件,输入
xmake
发现这次没有报错
运行文件
xmake -r
彻底结束
之后每次运行项目都只需要在终端中输入
xmake
xmake r
即可