栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

ubuntu系统下gpu版本opencv的编译

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ubuntu系统下gpu版本opencv的编译

ubuntu系统下gpu版本opencv的编译

最近在用opencv中的dnn模块,速度效率感觉不太够于是打算编译一下gpu版本的opencv
现在记录一下以便以后使用。
首先要注意几点ubuntu系统要在18.04以上最好,几点原因:
一.gcc,g++可以对应的上这的一般是版本7,刚刚好不会偏高也不会偏低
二.系统自带的是python3 ,这样可以很方便的下载源码编译
这些问题主要是针对系统不是18.04的

接下来就可以开始了
一.先安装依赖

$ 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

二.下载opencv4.5.2

$ cd ~
$ wget -O opencv.zip https://github.com/opencv/opencv/archive/4.5.2.zip
$ wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.5.2.zip
$ unzip opencv.zip
$ unzip opencv_contrib.zip
$ mv opencv-4.5.2 opencv
$ mv opencv_contrib-4.5.2 opencv_contrib

三.这些都搞完以后我们要准备一个virtual environment,因为直接更改编译系统python有可能造成系统损坏

$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo python3 get-pip.py
$ sudo pip install virtualenv virtualenvwrapper
$ sudo rm -rf ~/get-pip.py ~/.cache/pip
$ vim ~/.bashrc

把虚拟环境写进系统环境中

# virtualenv and virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh

激活系统环境

$ source ~/.bashrc

然后我们就可以新建virtualenv了

$ mkvirtualenv new_opencv -p python3

virtualenv中安装numpy依赖

$ pip install numpy

以后再要进入这个virtualenv只要运行下面代码

$ workon new_opencv

接下来就可以编译了
编译前我们需要确保一下cuda ,cudnn是否都安转好了
可以用nvcc -V查看cuda版本
然后需要去英伟达官网https://developer.nvidia.com/cuda-gpus看一下我们的显卡对应的Compute Capability
比如我的2080ti对应的是7.5然后先记下来后面要用到
接下来就开始编译了

$ workon opencv_cuda
$ 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 
	-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     #注意这里要用我们刚才记下的Compute Capability
	-D WITH_CUBLAS=1 
	-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules 
	-D HAVE_opencv_python3=ON 
	-D PYTHON_EXECUTABLE=~/.virtualenvs/opencv_cuda/bin/python 
	-D BUILD_EXAMPLES=ON ..

这一步后我们要记下python3 的install path
比如我这边是
– Python 3:
– Interpreter: /home/xxxxxx/.virtualenvs/new_opencv/bin/python3 (ver 3.6.9)
– Libraries: /usr/lib/x86_64-linux-gnu/libpython3.6m.so (ver 3.6.9)
– numpy: /home/xxxxxx/.virtualenvs/new_opencv/lib/python3.6/site-packages/numpy/core/include (ver 1.18.1)
– install path: lib/python3.6/site-packages/cv2/python-3.6

记下来

$ make -j8
$ sudo make install
$ sudo ldconfig

接下来我们需要用到刚刚记下来的路径去找编译好的opencv文件

$ ls -l /usr/local/lib/python3.6/site-packages/cv2/python-3.6
total 7168
-rw-r--r-
1 root staff 7339240 Jan 17 18:59 cv2.cpython-36m-x86_64-linux-gnu.so

找到这个so文件后我们需要把他和我们当前virtualenv环境链接上

$ cd ~/.virtualenvs/opencv_cuda/lib/python3.6/site-packages/
$ ln -s /usr/local/lib/python3.6/site-packages/cv2/python-3.6/cv2.cpython-36m-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'
>>>

最后是使用gpu版本dnn模块
net=cv2.dnn.readNetFromTensorflow(模型1地址,模型2地址)
net.setPreferableBackend(cv2.dnn.DNN_BACKEND_CUDA)
net.setPreferableTarget(cv2.dnn.DNN_TARGET_CUDA)

在下不才如有不对的地方欢迎指教谢谢

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/348330.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号