接一篇文章,这一节主要是编译安装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的包管理器

$ wget https://bootstrap.pypa.io/get-pip.py $ sudo python3 get-pip.py -i https://pypi.tuna.tsinghua.edu.cn/simple

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中需要注意的地方和报错怎么解决。