(細節項)在Linux下用正確的姿勢配置編譯安裝OpenCV
更新時間:2021-11-8
測試機:物理機
OS:Ubuntu 20。04
測試結果:配置測試成功
Note:重新編排了內容,補充一些小問題。
第一步 :下載依賴
這一步非常重要,如果是缺少某個依賴檔案,編譯過程也不會出錯,但是在使用opencv函式的時候就是提示錯誤,只能刪了重新編譯,非常的坑。
所以一定要先下載依賴檔案。
所以一定要先下載依賴檔案。
所以一定要先下載依賴檔案。
透過以下命令來安裝依賴檔案,新建一個shell指令碼:download。sh,寫入以下內容。
#!/bin/bash
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 install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev
sudo apt-get install libxvidcore-dev libx264-dev
sudo apt-get install libatlas-base-dev gfortran
sudo apt-get install ffmpeg
修改download。sh許可權並且執行指令碼
sudo chmod
777
。/download。sh、
。/download。sh
第二步:下載原始碼
從GitHub下載opencv和opencv_contrib原始碼。
如果你是剛剛安裝Linux OS,那麼最好就是修改源,不然下載會非常非常慢。具體操作請移步百度:
如何修改Linux源。
我這裡用的都是4。2。0的版本。
OpenCV和contirb的原始碼下載路徑:
使用git clone下來,或者直接使用zip下載都可以,使用zip下載可能會出現下載不完全的情況(起碼我是這樣的),往往出現的問題是缺少boostdesc_bgm。i檔案等問題(出現這個問題是由於網路問題)。所以我們需要提前下載好這些檔案,以防不時之需。檔案我已經集合在了我的GitHub裡面。
GitHub地址(歡迎大佬給小星星):
第三步:(可選)解壓opencv和opencv_contirb(git clone 不用):
tar -zxvf opencv-4。2。0。tar。gz
tar -zxvf opencv_contirb-4。2。0。tar。gz
第四步:移動
把opencv_contrib檔案移動到opencv資料夾裡:
sudo cp -r opencv_contrib-4。2。0 opencv-4。2。0
在opencv資料夾裡面新建一個資料夾bulid,然後進入這個資料夾。
sudo mkdir build
cd
bulid
第五步:生成makefile檔案
為了輸入方便,在這裡用新建一個shell指令碼然後執行
#新建指令碼,名字任意
vim cmake_build。sh
#寫入命令內容,請替換 OPENCV_EXTRA_MODULES_PATH的真實路徑
#!/bin/bash
#!/bin/bash
cmake
\
-D
CMAKE_BUILD_TYPE
=
RELEASE
\
-D
OPENCV_GENERATE_PKGCONFIG
=
ON
\
-D
WITH_TBB
=
ON
\
-D
WITH_EIGEN
=
ON
\
-D
WITH_GTK
=
ON
\
-D
WITH_OPENGL
=
ON
\
-D
WITH_V4L
=
ON
\
-D
WITH_OPENCL
=
OFF
\
-D
WITH_CUDA
=
OFF
\
-D
BUILD_NEW_PYTHON_SUPPORT
=
ON
\
-D
BUILD_DOCS
=
ON
\
-D
BUILD_TESTS
=
OFF
\
-D
BUILD_PERF_TESTS
=
OFF
\
-D
BUILD_EXAMPLES
=
OFF
\
-D
BUILD_opencv_gpu
=
OFF
\
-D
BUILD_opencv_gpuarithm
=
OFF
\
-D
BUILD_opencv_gpubgsegm
=
OFF
\
-D
INSTALL_PYTHON_EXAMPLES
=
ON
\
-D
INSTALL_C_EXAMPLES
=
ON
\
-D
CMAKE_BUILD_TYPE
=
RELEASE
\
-D
CMAKE_INSTALL_PREFIX
=
/usr/local/
\
-D
OPENCV_EXTRA_MODULES_PATH
=
/home/cv/CppProjects/opencv_4。x/opencv_contrib/modules/ 。。
#修改許可權
sudo chmod
777
。/cmake_build。sh
#執行
。/cmake_build_sh
這裡的命令不要原封不動的貼上複製,要根據自己的路徑進行修改,比如我的opencv資料夾是在/home/ai下,這個過程大概需要幾十秒就可以完成,cmake編譯過程會下載一些檔案,如果網路良好的話下載檔案應該全部完整,如果提示無法下載xxx。i檔案,重複多試幾次就可以了。
如果實在不能下載完全檔案的可以手動把。i檔案放入原始碼資料夾內。
#進入之前下載好的。i資料夾
cd
xxx/xxx/OpenCV-boostdesc-vgg-i
#複製檔案到對應位置
sudo cp 。/* xxx/xxx/opencv_4。2。0/opencv_contrib-4。2。0/modules/xfeatures2d/src/
第六步:make編譯安裝
我的機子是8核的所以是-j8,這個根據自己的機子進行選擇,多核心編譯能加快速度。大概需要5多分鐘吧。
#重新回到opencv/build資料夾
cd
xxx/xxx/opencv_4。2。0/build
#編譯安裝
sudo make -j8
sudo make install
第七步:(可選)錯誤處理(這裡不是每個人都會遇到,沒遇到就不用看這一步)
繼續等待,然後在大概95%的時候繼續報錯(@_@;),這個時候系統提醒你缺少某hpp檔案,不要擔心,這個檔案不需要下載,直接可以在opencv資料夾中找到。
這個問題可能是由於網路檔案,下載不完全,我第一次的時候遇到了,第二次用git clone就沒有。
透過命令開啟opencv_contrib檔案:
cd
xxx/xxx/opencv-4。2。0/opencv_contrib-4。2。0/modules/xfeatures2d/test
你會發現你並沒有features2d資料夾,這個資料夾在/opencv-4。2。0/modules裡面。
使用命令移動這個資料夾到缺失目錄下:
sudo cp -r opencv-4。2。0/modules/features2d opencv-4。2。0/opencv_contrib-4。2。0/modules/xfeatures2d/test
這下子基本問題全部解決了,繼續執行make -j8命令編譯。然後就可以看到100%編譯完成。
接著就是繼續安裝:
sudo make install
第八步:配置路徑
執行下面命令配置環境變數,注意如果你當前使用的是fish shell,或者別的shell,請退出到bash,不然配置會出問題。
查詢opencv4。pc檔案,在/usr/local/lib/目錄下建立pkgconfig目錄,然後將build資料夾下編譯生成的opencv4。pc 複製進/usr/local/lib/pkgconfig
find 。/ -name opencv4。pc
檢查在系統中是否能找到標頭檔案
pkg-config ——cflags opencv4
pkg-config ——libs opencv4
配置環境,這個時候你可能開啟opencv。conf可能是空白的,沒有關係,在檔案末尾新增儲存並退出,沒有這個檔案就自己建立一個。
sudo vim/etc/ld。so。conf。d/opencv。conf
#在opencv。conf中新增內容:
/usr/local/lib
執行生效命令:
sudo ldconfig
繼續開啟:
sudo vim /etc/bash。bashrc
在檔案末尾新增寫入:
export
PKG_CONFIG_PATH
=
$PKG_CONFIG_PATH
:/usr/local/lib/pkgconfig
儲存退出。
執行更新命令:
source
/etc/bash。bashrc
sudo updatedb
整個時候就完成了整個opencv的編譯配置。完結散花✧(≖ ◡ ≖✿)
第九步:測試
opencv內部集成了很多測試demo,可以透過執行這些demo看是否完成opencv的配置。
透過命令進入到demo中:
cd
opencv-4。2。0/samples/cpp/example_cmake
我們就稍微的修改一下程式碼,讓程式顯示一張圖片就好了。
sudo vim example。cpp
修改儲存後退出進行編譯操作。
sudo mkdir bulid
cd
bulid
sudo cmake 。。
sudo make
編譯完以會得到一個可執行檔案,執行後就可以看見圖片了。
。/opencv_example
好了,以上全部是在Linux下安裝並編譯opencv的全部過程,雖然坑有點多,但是多操作幾次就習慣了。如果在測試的時候還是沒辦法使用opencv,請認真比對我給出的過程。
感謝大家觀看!