Ubuntu18.04安装cuda10.0,cudnn7.6.4,opencv4.2.0,python环境

Ubuntu18.04安装cuda10.0,cudnn7.6.4,opencv4.2.0,python环境

  • 记录一下安装踩到的坑
    • 1.安装cuda10.0和cudnn7.6.4
    • 2.安装opencv

记录一下安装踩到的坑

新换了Ubuntu系统,安装可使用GPU加速的opencv时,遇到了好多大大小小的坑
1.cuda版本太高(后续要安装tensorflow)
2.cuda安装过程出现版本适配问题
3.opencv缺少依赖包
4.opencv Cmake出现问题
5.安装后找不到.so

1.安装cuda10.0和cudnn7.6.4

这个解决起来比较方便,到官网下载版本低一些的就可以了。

  1. cuda下载地址: 下载最新的cuda,
  2. 附一下cuda选版本的地址:自选版本的。这里我下载的是cuda10.0版本;
  3. cudnn下载地址(需要注册登录后下载):可根据cuda选择相应的版本。这里我选择的是7.6.4;
  4. 安装cuda时推荐使用runfile(local)方式进行安装。网上看过一些教程用deb(local)安装,之前按照教程结合官网安装指南尝试安装过,安装最新版本的时候没出现问题,但是在安装cuda10.0时候偶现一些头疼的版本适配问题,这里就不谈解决方式了。推荐直接换用runfile(local)方式(力荐)。
  5. 安装cuda完成后配置文件:具体方式为vim ~/.bashrc,在最后添加如下代码部分
# NVIDIA CUDA Toolkit
export PATH=/usr/local/cuda-10.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64:$LD_LIBRARY_PATH
然后 source ~/.bashrc
  1. 通过nvcc -V查看安装版本信息,显示10.0即可
  2. cuda安装好了之后,下载cudnn,解压后复制到对应cuda包下即可。
$ cd cuda
$ sudo cp -P lib64/* /usr/local/cuda/lib64/
$ sudo cp -P include/* /usr/local/cuda/include/

如果没出现任何问题,说明成功了。

2.安装opencv

  1. 安装opencv依赖
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install build-essential cmake unzip pkg-config git \
libjpeg-dev libpng-dev libtiff-dev \
libavcodec-dev libavformat-dev libswscale-dev \
libv4l-dev libxvidcore-dev libx264-dev \
libgtk-3-dev \
libatlas-base-dev gfortran \
python3-dev
  1. git上clone opencv4.2.0,opencv_contrib4.2.0。直接从git上下载太慢,可以搜下gitee快速拉取git上项目的方法,网上一大堆,非常好用。
  2. 进到opencv目录下新建build文件夹
$ cd ~/opencv
$ cd opencv
$ mkdir build && cd build

然后cmake一下

cmake -D CMAKE_BUILD_TYPE=RELEASE \
	-D CMAKE_INSTALL_PREFIX=/usr/local \
	-D INSTALL_PYTHON_EXAMPLES=ON \
	-D INSTALL_C_EXAMPLES=OFF \
	-D OPENCV_ENABLE_NONFREE=ON \
	-D WITH_CUDA=ON \
	-D WITH_CUDNN=ON \
	-D OPENCV_DNN_CUDA=ON \
	-D ENABLE_FAST_MATH=1 \
	-D CUDA_FAST_MATH=1 \
	-D CUDA_ARCH_BIN=7.5 \
	-D WITH_CUBLAS=1 \
	-D OPENCV_EXTRA_MODULES_PATH=~/opencv/opencv_contrib/modules \
	-D HAVE_opencv_python3=ON \
	-D PYTHON_EXECUTABLE=~/.virtualenvs/opencv_cuda/bin/python \
	-D BUILD_EXAMPLES=ON ..

在这里我创建并使用了虚拟环境virtualenvs/opencv_cuda。其中CUDA_ARCH_BIN根据自己的GPU来选择相应的值。查看网站
4. 如果出现缺少CmakeLists.txt,可以考虑把 OPENCV_EXTRA_MODULES_PATH=~/opencv/opencv_contrib/modules \这行的~/opencv/opencv_contrib/modules地址部分从你的电脑文件目录复制过来。然后问题就解决了,具体为啥,也不是特别清楚,大概是网页的文字格式和指令使用的有出入吧。
5. 当cmake没有问题后,可以进行opencv编译$ make -j$(nproc)
6. 然后

$ sudo make install
$ sudo ldconfig
  1. 如果使用虚拟环境,进入到安装目录去关联一下就好了
$ ln -s /usr/local/lib/python3.6/site-packages/cv2/python-3.6 ~/.virtualenvs/opencv_cuda/lib/python3.6/site-packages/cv2.so
  1. 如果安装好了import cv2报模块错误,查看下安装目录是否生成的cv2.so(python2.*),或者cv2.cpython-36m-x86_64-linux-gnu.so (python3.6的)。如果没有生成,说明安装过程中出了问题。可以删除opencv目录下的build文件,重复第3步骤(cmake开始)。

主要参考如下博文,感谢!
[1]: https://www.pyimagesearch.com/2020/02/03/how-to-use-opencvs-dnn-module-with-nvidia-gpus-cuda-and-cudnn/

你可能感兴趣的:(opencv,python,opencv,cuda,linux)