在Ubuntu20.04下配置Opencv(C++)并用xmake构建和运行


在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

即可


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM