爲什麼要寫這個
網上有太多的教程,無外乎就是手動編譯或者藉助寫好的腳本自動編譯。很多教程裏,安裝依賴項那部分操作要不是太繁瑣、太亂,要不就是安裝不全,導致編譯出錯。所以我想寫一個簡潔有效的安裝手段,並且讓大家瞭解每個部分是做什麼用的。
預先條件
安裝了jetpack4.2以上版本,通常已經自帶opencv,但由於該opencv功能不全面,我們需要刪除並安裝行版本
刪除命令:
sudo apt-get purge libopencv*
通過腳本安裝
兩種選擇
① 一鍵腳本操作:
git clone https://github.com/jetsonhacks/buildOpenCVXavier.git
cd buildOpenCVXavier
git checkout v1.0
./buildOpenCV.sh
②修改腳本,安裝任意版本opencv
git clone https://github.com/jetsonhacks/buildOpenCVXavier.git
cd buildOpenCVXavier
進入buildOpenCVXavier文件夾後,用任意文本編輯器打開buildOpenCV.sh腳本:
選擇版本
OPENCV_VERSION=3.4.3
選擇對應設備:(通過刪除/保留#號註釋,當然每個設備與ARCH_BIN一一對應)
# Jetson AGX Xavier
ARCH_BIN=7.2
# Jetson TX2
#ARCH_BIN=6.2
# Jetson TX1
# ARCH_BIN=5.3
INSTALL_DIR=/usr/local
ARCH_BIN實際上是NVIDIA公司旗下顯卡的“GPU Compute Capability”的號碼,其他顯卡號可以從以下網站查
https://developer.nvidia.com/cuda-gpus
保存腳本,並運行
git checkout v1.0
./buildOpenCV.sh
安裝好後刪除安裝包
./removeOpenCVSources.sh
自行安裝(以opencv3最新版本3.4.9爲例)
這種方式非常繁瑣,並且一不小心就可能少安裝東西,導致重新安裝。
實際上,我們要做的是下載opencv源代碼,再使用CMAKE編譯,最終產生opencv的庫
首先安裝依賴項,必不可缺!
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
2、下載opencv sourse code,進入文件夾
cd ~/opencv
mkdir build
cd build
3、爲了便於管理和查看,我們通過新建腳本來編譯opencv:
sudo gedit my_cmake.sh
打開my_cmake.sh後,貼入
cmake \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr \
-DBUILD_PNG=OFF \
-DBUILD_TIFF=OFF \
-DBUILD_TBB=OFF \
-DBUILD_JPEG=OFF \
-DBUILD_JASPER=OFF \
-DBUILD_ZLIB=OFF \
-DBUILD_EXAMPLES=ON \
-DBUILD_opencv_java=OFF \
-DBUILD_opencv_python2=ON \
-DBUILD_opencv_python3=ON \
-DENABLE_PRECOMPILED_HEADERS=OFF \
-DWITH_OPENCL=OFF \
-DWITH_OPENMP=OFF \
-DWITH_FFMPEG=ON \
-DWITH_GSTREAMER=ON \
-DWITH_GSTREAMER_0_10=OFF \
-DWITH_CUDA=ON \
-DWITH_GTK=ON \
-DWITH_VTK=OFF \
-DWITH_TBB=ON \
-DWITH_1394=OFF \
-DWITH_OPENEXR=OFF \
-DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-8.0 \
-DCUDA_ARCH_BIN=7.2 \ #tx2是6.2
-DCUDA_ARCH_PTX="" \
-DINSTALL_C_EXAMPLES=ON \
-DINSTALL_TESTS=ON \
-DOPENCV_TEST_DATA_PATH=../opencv_extra/testdata \ #CONTRIB文件的位置
這些on off 如同開關,打開相應功能
運行腳本: sudo ./my_cmake.sh
4,編譯
make -j8
sudo make install
5添加環境變量(目的是以後無論在什麼路徑,都能使用opencv庫)
cd ~/.bashrc
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/