一、前言
- 本文主要介绍 Jetson Oring Nano,Jetson Nano, Jetson TX2这三块开发板上 OpenCV 的卸载安装及编译(支持 CUDA模块);
- 解决了一些出现的问题。
二、卸载OpenCV
如何查看本机安装的OpenCV是否支持CUDA?
- 如果已安装jtop,可以直接使用jtop查看,命令如下。
sudo jtop
按数字6查看INFO页面(某些开发板是7INFO),可以看到:
* OpenCV: 4.1.1 compiled CUDA: NO
从官网拉下来的 OpenCV (已编译)是不支持CUDA 加速的,无法充分利用GPU。
- 如果未安装jtop,可以使用以下命令查看opencv库:
pkg-config --libs opencv
得到结果如下(只保留cuda相关库):
-L/usr/local/lib -lopencv_cudaoptflow -lopencv_optflow
-lopencv_cudalegacy -lopencv_cudawarping -lopencv_cudaimgproc
-lopencv_cudafilters -lopencv_cudaarithm -lopencv_cudev
如果OpenCV不支持CUDA,不会包含上述库。
如何卸载默认的 OpenCV ?
sudo apt purge libopencv*
sudo apt autoremove
完成以后更新一下。考虑到网速问题,建议先更换镜像源,本文不再赘述。
sudo apt update
sudo apt upgrade
三、安装编译 OpenCV
1.安装依赖库
- Generic tools
sudo apt install build-essential cmake pkg-config unzip yasm git checkinstall
- Image I/O libs
sudo apt install libjpeg-dev libpng-dev libtiff-dev
- Video/Audio Libs - FFMPEG, GSTREAMER, x264 and so on
sudo apt install libavcodec-dev libavformat-dev libswscale-dev libavresample-dev
sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
sudo apt install libxvidcore-dev x264 libx264-dev libfaac-dev libmp3lame-dev libtheora-dev
sudo apt install libfaac-dev libmp3lame-dev libvorbis-dev
- OpenCore - Adaptive Multi Rate Narrow Band(AMRNB) and Wide Band(AMRWB) speech codec
sudo apt install libopencore-amrnb-dev libopencore-amrwb-dev
- Cameras programming interface libs
sudo apt-get install libdc1394-22 libdc1394-22-dev libxine2-dev libv4l-dev v4l-utils
cd /usr/include/linux
sudo ln -s -f ../libv4l1-videodev.h videodev.h
cd ~
- GTK lib for the graphical user functionalites coming from OpenCV highghui module
sudo apt-get install libgtk-3-dev
- Python libraries for python3
sudo apt-get install python3-dev python3-pip
sudo -H pip3 install -U pip numpy
sudo apt install python3-testresources
- Parallelism library C++ for CPU
sudo apt-get install libtbb-dev
- Optimization libraries for OpenCV
sudo apt-get install libatlas-base-dev gfortran
- Optional libraries
sudo apt-get install libprotobuf-dev protobuf-compiler
sudo apt-get install libgoogle-glog-dev libgflags-dev
sudo apt-get install libgphoto2-dev libeigen3-dev libhdf5-dev doxygen
2.下载OpenCV并解压
cd ~/Downloads
wget -O opencv.zip https://github.com/opencv/opencv/archive/refs/tags/4.5.3.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/refs/tags/4.5.3.zip
unzip opencv.zip
unzip opencv_contrib.zip
解压完成之后创建python虚拟环境(可选)。
sudo pip install virtualenv virtualenvwrapper
sudo rm -rf ~/.cache/pip
使用vim编辑.bashrc,加上export两条语句。
sudo vim ~/.bashrc
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
使其立即生效。
source ~/.bashrc
使用virtualenv创建虚拟环境,virtualenvname为虚拟环境名称,建议设置为cv,-p表示母python路径,笔者使用的是/usr/bin/python3。
virtualenv path/to/virtualenvname -p path/to/python3
创建成功后启动虚拟环境,并安装numpy
source path/to/vitualenvname/bin/active
pip install numpy
3.执行安装
创建build文件夹,进入。
cd opencv-4.5.3
mkdir build
cd build
执行cmake,建议将下下述命令写到.sh文件中,用bash运行。CUDA_TOOLKIT_ROOT_DIR应改为自己开发板上CUDA的根目录,CUDA_ARCH_BIN应改为GPU计算能力,笔者所用开发板支持的CUDA版本为10.2,计算能力5.3。
OPENCV_PYTHON3_INSTALL_PATH为python3的安装目录,还记得我们创建的虚拟环境吗,使用之,需要注意的是,笔者创建虚拟环境中python版本3.6,所以路径为path/to/virtualenv/lib/python3.6/site-packages,如果你的python版本不是3.6,应该更改为实际的python版本。PYTHON_EXECUTABLE为python解释器的路径,OPENCV_EXTRA_MODULES_PATH为opencv_contrib的路径,务必填写准确。
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local \
-D BUILD_opencv_python2=1 -D BUILD_opencv_python3=1 -D WITH_FFMPEG=1 \
-D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-10.2 \
-D WITH_TBB=ON -D ENABLE_FAST_MATH=1 -D CUDA_FAST_MATH=1 -D WITH_CUBLAS=1 \
-D WITH_CUDA=ON -D BUILD_opencv_cudacodec=OFF -D WITH_CUDNN=ON \
-D OPENCV_DNN_CUDA=ON \
-D CUDA_ARCH_BIN=5.3 \
-D WITH_V4L=ON -D WITH_QT=OFF -D WITH_OPENGL=ON -D WITH_GSTREAMER=ON \
-D OPENCV_GENERATE_PKGCONFIG=ON -D OPENCV_PC_FILE_NAME=opencv.pc \
-D OPENCV_ENABLE_NONFREE=ON \
-D OPENCV_PYTHON3_INSTALL_PATH=path/to/virtualenv/lib/python3.6/site-packages \
-D PYTHON_EXECUTABLE=path/to/virtualenv/bin/python \
-D OPENCV_EXTRA_MODULES_PATH=path/to/opencv_contrib-4.5.3/modules \
-D INSTALL_PYTHON_EXAMPLES=OFF -D INSTALL_C_EXAMPLES=OFF -D BUILD_EXAMPLES=OFF ..
编译之前,检查下述选项。
-- NVIDIA CUDA: YES (ver 11.2, CUFFT CUBLAS FAST_MATH)
-- NVIDIA GPU arch: 75
-- NVIDIA PTX archs:
--
-- cuDNN: YES (ver 8.2.0)
以防万一,先扩展虚拟内存再执行make。
cd /
sudo mkdir swap
cd swap
sudo dd if=/dev/zero of=swapfile bs=1M count=20480
sudo mkswap swapfile
sudo swapon swapfile
上述命令创建了大小为bs*count的swap空间,可以根据需要修改大小。将生成的文件转换成swap文件并激活。
设置swap分区为开机自动挂载。
sudo cp /etc/fstab /etc/fstab.bak
echo '/swap/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
free -h
查看cpu内核数,多开几个内核。-j4编译时间约为 1~3 小时,编译完成后进行安装。
nproc
make -j4
sudo make install
至此,安装成功。
四、检查安装是否成功
在 python3 中运行以下命令,正确打印出本次安装版本号即表示成功。
import cv2
cv2.__version__
执行jtop指令,观察到下述情况即表示OpenCV已支持CUDA。文章来源:https://www.toymoban.com/news/detail-705535.html
* OpenCV: 4.5.3 compiled CUDA: YES
大功告成!文章来源地址https://www.toymoban.com/news/detail-705535.html
到了这里,关于Jetson系列开发板/Linux安装OpenCV,编译CUDA模块,流程详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!