为什么要写这个
网上有太多的教程,无外乎就是手动编译或者借助写好的脚本自动编译。很多教程里,安装依赖项那部分操作要不是太繁琐、太乱,要不就是安装不全,导致编译出错。所以我想写一个简洁有效的安装手段,并且让大家了解每个部分是做什么用的。
预先条件
安装了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/