在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