1.源码下载连接
opencv:Releases - OpenCV
opencv-contrib: https://github.com/opencv/opencv_contrib
建议不要下最新版本 一般我会下4.5.4 // 4.5.6 // 4.6.0 opencv和opencv-contrib版本要对齐
将下好的opencv和opencv-contrib解压 将opencv-contrib解压到opencv的文件夹中
2.卸载无cuda加速的opencv
买板子时,商家装的系统一般会带cpu版本的opencv 如下面的图所示 cuda显示NO 同时记一下你的CUDA arch BIN的数值 后面编译会用到,我的是8.7
可以通过在命令行输入下面这个命令查看
sudo jtop
没有这个命令的可以参考下面的文章安装
https://blog.csdn.net/qq_46941656/article/details/119570425
在命令行输入下列三行指令卸载cpu版本opencv
sudo apt purge libopencv*
sudo apt autoremove
sudo apt update
3.安装依赖库
正式编译安装opencv前需要先安装一些依赖库 一定要确保全部安装成功!
sudo apt install -y build-essential checkinstall cmake pkg-config yasm git gfortran
sudo apt update
sudo apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
sudo apt install -y libjpeg8-dev libjasper-dev libpng12-dev libtiff5-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine2-dev libv4l-dev
sudo apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgtk2.0-dev libtbb-dev libatlas-base-dev libfaac-dev libmp3lame-dev libtheora-dev libvorbis-dev libxvidcore-dev libopencore-amrnb-dev libopencore-amrwb-dev x264 v4l-utils
sudo apt install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
遇到的问题:
1.无法定位libjasper-dev软件包
解决方法
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
2.最后一行的python-dev无法安装
解决方法 安装python3-dev替换它
sudo apt install python3 python3-dev
总之 基本问题换源或者替换版本就能解决 有其他问题及时搜索解决 一定要确保依赖项安装成功
4.编译安装opencv
新建build文件夹
cd opencv-4.6.0
mkdir build
cd build
cmake \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DOPENCV_ENABLE_NONFREE=1 \
-DBUILD_opencv_python2=1 \
-DBUILD_opencv_python3=1 \
-DWITH_FFMPEG=1 \
-DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda \
-DCUDA_ARCH_BIN=8.7 \
-DCUDA_ARCH_PTX=8.7 \
-DWITH_CUDA=1 \
-DENABLE_FAST_MATH=1 \
-DCUDA_FAST_MATH=1 \
-DWITH_CUBLAS=1 \
-DOPENCV_GENERATE_PKGCONFIG=1 \
-DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.6.0/modules \
..
编译 (大概1-3小时)
make -j4
安装
sudo make install
5.验证是否安装成功
输入jtop再次查看 发现CUDA变为YES
或者在命令行中输入python3代开python在import cv2 看是否成功
python3
import cv2
cv2.__version__
遇到的问题:
1.我在安装完成后发现jtop变为YES 但是命令行中却不能import成功
这是因为我的python没有cv路径
需要找到cv包的实际安装路径(我是用find指令找到的)把它加到python的系统路径中
sudo find -name"cv2*.* 2>/dev/null
import sys
sys.path.append('/usr/local/lib/python3.8/site-packages')