ubuntu18编译opencv4.1.1——为了使用opencv的cuda加速

网上教程挺多的的,我也是参考网上教程编译成功的,现在把我编译的过程发出来。
目的:使用opencv中的cuda加速函数。例如:

frame1_gray = cv.cuda_GpuMat(image1)
frame2_gray = cv.cuda_GpuMat(image2)
opticalFlowGPU = cv.cuda_FarnebackOpticalFlow.create(3,0.5,False,9,3,5,1.2,0)
flow = opticalFlowGPU.calc(frame1_gray, frame2_gray, None)
flow = flow.download()

还有其他函数:python中GPU版本的opencv常用方法介绍

opencv编译的参考文章
在Ubuntu 16.04 LTS下编译安装OpenCV 4.1.1
Ubuntu18.04 源码编译OpenCV4.1.1

1.安装环境依赖,环境依赖很重要,我一开始一直没成功,就是因为环境依赖没安装好。
参考第一篇文章的环境依赖:

sudo apt-get install build-essential

# OpenCV官网中安装的是旧版本的libgtk2.0-dev,这里我们安装新版本的libgtk-3-dev
sudo apt-get install git libgtk-3-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

# OpenCV官网中安装2.7版本的python-dev和python-numpy,这里我们安装python 3版本的python3-dev和python3-numpy
sudo apt-get install python3-dev python3-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

这个也可能不够全面,可以多看几篇文章,把需要的依赖都安装好。

2.下载源码
在这里插入图片描述

3.cmake配置
配置的时候需要联网下载一些包,这个可以自己先下载好,改下载路径。opencv在ubuntu下安装ippcv无法加载问题
在这里插入图片描述

我一开始是从cmake的gui界面配置,按照第一篇文章的选择做的。
在他基础上加上了WITH_CUDA,因为我要用cuda加速。但是编译出来,没有cv2.cpython-36m-x86_64-linux-gnu.so这个文件。(在我一开始编译时也没有这个文件,那个时候是因为缺少python3-dev这个依赖)昨天又用第一篇文章的方法编译还是没有这个文件。这次我用命令行cmake。

cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/home/hyx/local/opencv4 \
    -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.1.1/modules \
    -D OPENCV_GENERATE_PKGCONFIG=ON \
    -D PYTHON3_LIBRARY=/usr/local/anaconda3/lib/libpython3.6m.so \
    -D PYTHON3_INCLUDE_DIR=/usr/local/anaconda3/include/python3.6m \
    -D PYTHON3_EXECUTABLE=/usr/local/anaconda3/bin/python \
    -D PYTHON3_PACKAGES_PATH=/usr/local/anaconda3/lib/python3.6/site-packages \
    -D BUILD_opencv_python2=OFF \
    -D BUILD_opencv_python3=ON \
    -D INSTALL_PYTHON_EXAMPLES=OFF\
    -D INSTALL_C_EXAMPLES=OFF \
    -D OPENCV_ENABLE_NONFREE=ON \
    -D BUILD_EXAMPLES=ON \
    -D WITH_CUDA=ON ..

注意修改要用到的python环境
CMAKE_INSTALL_PREFIX我用的不是默认的/usr/local/,而是我自己的路径,这个看个人需求。我这样改是为了编译错误,方便删除。

4.编译

make -j8
sudo make install

如果不是管理员,在第二步之前su到root,进行make install

这样,编译之后,可以看到cv2.cpython-36m-x86_64-linux-gnu.so
如果编译结束之后没报错,但是lib里面没有python3这个文件夹,那就不算成功。
在这里插入图片描述
5.因为是在服务器上编译的,服务器本身就有opencv-python。
所有我现在cv2.cpython-36m-x86_64-linux-gnu.so文件夹下运行python。用来验证opencv版本。
在这里插入图片描述
因为我之前编译成功之后,每次验证都是python安装的opencv-python版本,后来在这个文件夹下就成功。可能需要软连接或者把这个so文件移到python的环境文件夹里面,但是因为我这是服务器,很多人在用,所以我就每次需要用到cuda加速的时候,把这个路径添加到sys.path。
在这里插入图片描述
我把这个文件夹和CMAKE_INSTALL_PREFIX=/home/hyx/local/opencv4文件夹放在公用文件夹里面,其他用户也可以使用。(改/.bashrc文件我试过了,还是会用到opencv-python版本)

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_38469784/article/details/109022488
今日推荐