在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
即可