接一篇文章,这一节主要是编译安装opencv4.2+opencv_contrib编译,难点在于编译的过程中会出错各种报错,会有很多坑。按下面的方法应该说成功率还是相当高的。

首先是系统选用ubuntu16.04,硬件显卡选用2070,前提是显卡驱动和cuda,cudnn都全部安装好。接着我们往下操作

1,更新系统安装必要的包

$ sudo apt-get update

$ sudo apt-get upgrade

$ sudo apt-get install build-essential cmake unzip pkg-config

$ sudo apt-get install libjpeg-dev libpng-dev libtiff-dev

$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev

$ sudo apt-get install libv4l-dev libxvidcore-dev libx264-dev

$ sudo apt-get install libgtk-3-dev

$ sudo apt-get install libatlas-base-dev gfortran

$ sudo apt-get install python3-dev

组合成一条命令也可以。

2,下载opencv和opencv_contrib-4.2.并重命名

$ cd ~

$ wget -O opencv.zip https://github.com/opencv/opencv/archive/4.2.0.zip

$ wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.2.0.zip

$ unzip opencv.zip

$ unzip opencv_contrib.zip

$ mv opencv-4.2.0 opencv

$ mv opencv_contrib-4.2.0 opencv_contrib

可以提前下载好opencv.zip opencv_contrib.zip 这两个文件。放到家目录或者其它目录中都行

3,安装python的包管理器

get-pip.py也可以提前下载,上传到服务器本地安装。

安装中加不清华源的地址,速度会很快 -i https://pypi.tuna.tsinghua.edu.cn/simple

4.安装虚拟环境和虚拟环境包管理器

$ sudo pip install virtualenv virtualenvwrapper -i https://pypi.tuna.tsinghua.edu.cn/simple

sudo rm -rf ~/ get-pip.py ~/ .cache / pip 这一步测试下来可做可不做。

5设置环境变量

nano ~/ .bashrc

在文件底部插入

virtualenv and virtualenvwrapper

export WORKON_HOME=$HOME/.virtualenvs

export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3

source /usr/local/bin/virtualenvwrapper.sh

换成vim编辑也是一样

CTRL+X,Y,保存退出

重新加载

$ source ~/ .bashrc

6 创建python虚拟环境

$ mkvirtualenv opencv_cuda -p python3

3,安装NUMPY到opencv_cud环境

$ pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple

进入虚拟环境

$ workon opencv_cuda

创建虚拟环境,主要是和系统python环境分开。比较好测试

7 编译opencv

进入Opencv目录

$ cd ~/opencv

$ mkdir build

$ cd build

执行 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 \ ------CUDA打开

-D WITH_CUDNN=ON \ -------CDDNN打开

-D OPENCV_DNN_CUDA=ON \

-D ENABLE_FAST_MATH=1 \

-D CUDA_FAST_MATH=1 \

-D CUDA_ARCH_BIN=7.5 \ ---------------这个是显卡算力,官网有参数2070的卡对应的是7.5,

-D WITH_CUBLAS=1 \

-D OPENCV_EXTRA_MODULES_PATH=/opt/opencv/opencv_contrib/modules \

-D HAVE_opencv_python3=ON \

-D PYTHON_EXECUTABLE=~/.virtualenvs/opencv_cuda/bin/python \

-D WITH_WEBP=OFF \

-D BUILD_EXAMPLES=off .. ------------------这个原来是0FF,后来发现make时报cuda文件找不到, 其实是存在的,网上很多方法都试了均不行,改为0FF可以,这块意 资料反正我们用不到就关了。

可以说这个部分相当重要,很可以这块弄错了,下面就进行不下去了。这个地方做了N多测试。这个配置算是比较稳妥,几个关键的地方说一下。

编译完检查输入

...

-- NVIDIA CUDA:YES (ver 10.0, CUFFT CUBLAS FAST_MATH)

-- NVIDIA GPU arch: 70

-- NVIDIA PTX archs:

--

-- cuDNN: YES (ver 7.6.0)

接着就

$ make

$ make install

$ ldconfig

8 查看 cv2.cpython-35m-x86_64-linux-gnu.so 文件

$ ls -l /usr/local/lib/python3.5/site-packages/cv2/python-3.5

total 7168

-rw-r--r-

1 root staff 7339240 Jan 17 18:59 cv2.cpython-35m-x86_64-linux-gnu.so

做软连接

$ cd ~/.virtualenvs/opencv_cuda/lib/python3.5/site-packages/

$ ln -s /usr/local/lib/python3.5/site-packages/cv2/python-3.5/cv2.cpython-35m-x86_64-linux-gnu.so cv2.so

测试版本

$ workon opencv_cuda

$ python

Python 3.5.3 (default, Sep 27 2018, 17:25:39)

[GCC 6.3.0 20170516] on linux

Type "help", "copyright", "credits" or "license" for more information.

import cv2

cv2.version

'4.2.0'

至此就全部结束了,但是问题是在make的过程中会有各种报错,这种报错有时候到98%的时候错了,真的是太郁闷了,后面我再更新一下make中需要注意的地方和报错怎么解决。