接一篇文章,这一节主要是编译安装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中需要注意的地方和报错怎么解决。