ubuntu1804.6從源碼編譯opencv4.5和擴展庫和cuda10.1

https://blog.csdn.net/qianbin3200896/article/details/107894029python

 

python3.69好像不被opencv4.5支持,反正最後python3.69不能用能夠換成 opencv4.4.c++

 

1下載opencv源碼

從github上下載最新的opencvgit

https://github.com/opencv/opencv/tagsgithub

 

 

 

2下載擴展庫源碼 

下載完opencv之後再下載opencv_contrib算法

https://github.com/opencv/opencv_contrib/tagsubuntu

 

 

 

將opencv_contrib文件夾移動到opencv文件夾裏。而後在opencv文件夾裏創建build文件夾,以下圖所示:小程序

 

 

 

 

接下來打開終端。進入build文件夾,而後安裝環境依賴:bash

4.5的庫網絡

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 libdc1394-22-dev
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev

 

4.4的庫app

sudo apt-get update



sudo apt-get install -y build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
sudo apt-get install -y python2.7-dev python3.6-dev python-dev python-numpy python3-numpy
python3 -m pip install --upgrade pip

#直接裝不了找不到
sudo apt-get install -y libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev 

sudo add-apt-repository "deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe"
sudo apt update
sudo apt-get install -y libjasper1 libjasper-dev

sudo apt-get install -y libdc1394-22-dev
sudo apt-get install -y libv4l-dev v4l-utils qv4l2 v4l2ucp
sudo apt-get install -y curl

#後面用到
sudo apt-get install -y cmake-gui

sudo apt-get update

  

 

 

這裏可能遇到一個問題

libjasper-dev找不到,修改源

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"

sudo add-apt-repository "deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe"
sudo apt update
sudo apt install libjasper1 libjasper-dev

  

  

 

 

接下來爲了安裝方便不容易出錯,建議使用cmake-gui安裝,安裝命令以下:

sudo apt-get install cmake-gui

  

安裝完畢打開cmake-gui,命令:

cmake-gui 

在Where is the source code:選擇opencv目錄位置,在Where to build the binaries:選擇build位置以下圖所示:

 

 

 

選擇完畢點擊Configure,而後會彈出編譯器選項,選擇Unix Makefiles便可。

 

 

配置完畢以下圖所示:

 

 

 

根據我的須要使用用cuda

若是要用cuda

WITH cuda 必選

其他兩個非必須

 

若是是jetson nx板子 須要制定顯卡計算能力,手動選擇 add entry 建立這個參數

 

 

 

 

 

 

 

找到BUILD_opencv_world,不要(反正每次選了這個總有一些之外 py3沒法使用)

 

 

 

 

 

 

 

找到在CMAKE_BUILD_TYPE 值處輸入RELEASE,根據須要是否編譯DEBUG,其餘保持不變;

通常只要  Release

 

 

找到OPENCV_ENABLE_NONFREE,在後面的方框點上勾(有的算法有專利,不點這個不能用,好比sift);

 

 

 

 

找到OPENCV_EXTRA_MODULES_PATH,選擇opencv_contrib文件夾中的modules文件夾,注意是modules文件夾(個人路徑是/home/qianbin/opencv/opencv_contrib/modules)。

 

 

找到後面的方框點上勾;

 

 

生成python3版本的全部路徑信息輸入

確保安裝了numpy,沒有安裝就安裝,而後關閉cmake從新的打開

 

 

 

 

 

根據須要是否取消python2的編譯,找到BUILD_opencv_python2,後面方框點溝掉;

點擊Add Entry,添加BUILD_opencv_python3,開啓python3的編譯。

(opencv4.5 滅有自動出現BUILD_opencv_python3,雖然手動添加但最後python3.69找不到。opencv4.4的源碼卻自動出現BUILD_opencv_python3,不知道是本版支持問題,仍是由於前面選擇了opencv_world致使的)

其餘python路徑是開始自動讀取的,覈對下

 

下圖是4.4的選擇

 

 

 

 其餘選擇

WITH_GSTREAMER

 

 

 WITH_LIBV4L

 

 

 CMAKE_INSTALL_PREFIX 安裝路徑

 

 

 

 

 

 樣例是否編譯看本身,通常可不用(我本身編譯了)

BUILD_TESTS=OFF 

BUILD_PERF_TESTS=OFF 

BUILD_EXAMPLES=OFF  

 

 

 

 

 

 完成以上工做再點擊Configure,耐心等一等,若是上面還有紅色的再點擊Configure,之到沒有紅色爲止。

 

 

Configure完成以後點擊Generate,等一等便可。

 

 建議先去看額外出錯,不容易下載的東西先下載好放在指定文件目錄,省去由於這個出錯

 

正常狀況下,等Generate完成以後,咱們能夠直接在build目錄下輸入命令:

 

make

 

 

 

 

額外出錯

(我在來聯想y7000 UBUNTU1804 開啓某牆模式下,他自動下載了不用管。)

進行編譯工做了。實際上這樣極可能出錯,我在編譯了10分鐘後報錯了,出錯的緣由通常都是說缺乏什麼文件,缺乏的文件主要是Cmake在配置時因爲網絡很差沒下載下來。我在位於build下的CmakeDownloadLog.txt能夠查看到有哪些文件下載失敗。常常下載失敗的文件我上傳到了網盤,

這些文件我整理了百度網盤便於下載

連接:https://pan.baidu.com/s/1h1geuNg9bdDNiRNpJ6Dq_w
提取碼:zht4

 

 

 

第一批文件,手動下放在相對路徑

opencv-4.5.1/build/downloads/xfeatures2d

 

 

 

 

 第二批文件 -測試樣例所需的人臉模型文件

  

/opencv-4.5.1/build/share/opencv4/testdata/cv/face/"

 

 

 

 

 

  

 

若是沒有務必拷貝到build目錄下的downloads/xfeatures2d文件夾裏。我在安裝時還有一個文件face_landmark_model.dat沒有下載成功,將該文件放到build目錄下的/share/opencv4/testdata/cv/face目錄下,若是沒有目錄可自行創建。檢查拷貝完畢,最好再次Configure一下,直到沒有上面沒有紅色爲止,而後再點擊Generate。若是不放心能夠再次檢查日誌。

 

最後在build目錄下從新輸入命令:

make

  

上述過程須要十幾分鍾甚至更長(取決於機器性能),編譯不出錯完成以後,出現下圖所示界面:

 

 

 

 

接下來在build目錄下輸入命令:

sudo make install

  

 

 

 

便可安裝。最後全部文件將被安裝到目錄「/usr/local/」下面。

 

 

配置opencv

安裝完成後,手動建立opencv.pc:

cd /usr/local/lib
sudo mkdir pkgconfig && cd pkgconfig
sudo gedit opencv.pc

 

 

 

  而後添加:

prefix=/usr/local
exec_prefix=${prefix}
includedir=/usr/local/include
libdir=/usr/local/lib
 
Name: OpenCV
Description: Open Source Computer Vision Library
Version: 4.4.0
Libs: -L${exec_prefix}/lib -lopencv_stitching -lopencv_superres -lopencv_videostab -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dnn_objdetect -lopencv_dpm -lopencv_face -lopencv_photo -lopencv_freetype -lopencv_fuzzy -lopencv_hdf -lopencv_hfs -lopencv_img_hash -lopencv_line_descriptor -lopencv_optflow -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_text -lopencv_dnn -lopencv_plot -lopencv_xfeatures2d -lopencv_shape -lopencv_video -lopencv_ml -lopencv_ximgproc -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_flann -lopencv_xobjdetect -lopencv_imgcodecs -lopencv_objdetect -lopencv_xphoto -lopencv_imgproc -lopencv_core
Libs.private: -ldl -lm -lpthread -lrt
Cflags: -I${includedir}

 

 

 

 

 更改環境變量,輸入命令:

sudo gedit /etc/bash.bashrc

  打開以後,在文件最後面添加如下內容:

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH

 

 

 

 保存退出,opencv基本上就安裝完成了。經過 pkg-config 查看 opencv 版本:

pkg-config --modversion opencv

 

 小程序測試

找到 opencv-4.5.1/samples/cpp/example_cmake 目錄下,官方已經給出了一個cmake的example,咱們能夠拿來測試下。按順序執行:

cmake .
make
./opencv_example

  便可看到打開了攝像頭,在左上角有一個hello opencv ,即表示配置成功。

 

 

 

 安裝完成後進行python測試

4.5沒成功,我直接裝了 pip install python-opencv 裝了擴展庫

4.4 jetson nx板子安裝成功

python3直接調用

c++須要配置下到系統,而後能夠調用

推薦之後用4.4 +擴展庫 編譯。 

相關文章
相關標籤/搜索