ubuntu14.04 +CUDA8.0+OpenCV3.4 编译(详细流程)

    在OpenCV的图像处理过程中,高量并发任务不能完全依赖于CPU,速度达不到需求,需要我们使用CUDA的高并发特性来加速,本文中,我来介绍下如何使用CUDA对OPENCV进行编译

   软件下载

    在编译Opencv之前我们的电脑要安装好CUDA,这个可以参考之前caffe编译流程,下载OpenCVOpenCV拓展包

   依赖安装   

sudo apt-get update
sudo apt-get install libopencv-dev build-essential checkinstall cmake pkg-config yasm libtiff4-dev libjpeg-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev python-dev python-numpy libtbb-dev libqt4-dev libgtk2.0-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils

#安装ffmpeg
 sudo add-apt-repository ppa:jon-severinsson/ffmpeg
 sudo apt-get update
 sudo apt-get install ffmpeg

 sudo apt-get install frei0r-plugins 

   编译

       假设文件的目录结构如下:

badoo@deeplearn:~/opencv$ ls
opencv-3.4.0         opencv_contrib-3.4.0
opencv-3.4.0.tar.gz  opencv_contrib-3.4.0.tar.gz
badoo@deeplearn:~/opencv$ 

       我们用release的方式Cmake,方法如下

 cd opencv-3.4.0/
 mkdir release
 cd release
 cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D ENABLE_FAST_MATH=1 -D CUDA_FAST_MATH=1 -D WITH_CUBLAS=1 -D OPENCV_EXTRA_MODULES_PATH=/home/badoo/opencv/opencv_contrib-3.4.0/modules -D PYTHON3_EXECUTABLE=/usr/bin/python3 -D BUILD_OPENCV_PYTHON3=ON -D BUILD_TIFF=ON ..

       需要注意几个参数:

-D OPENCV_EXTRA_MODULES_PATH=/home/badoo/opencv/opencv_contrib-3.4.0/modules

     表示拓展模块的位置,其中包括DNN和一些拓展包

-D PYTHON3_EXECUTABLE=/usr/bin/python3

     python 执行器的位置

-D BUILD_OPENCV_PYTHON3=ON

     是否生成cv2.so

-D BUILD_TIFF=ON ..

 如下过需要cuvid 作视频编解码,需要下边这个库的支持

WITH_NVCUVID:BOOL=ON

 原文中最后没有加上-D BUILD_TIFF=ON 的选项,这样在make的时候可能会遇上LIBTIFF_4.0 link errors(见上面的第二个链接

在cmake打印的信息中确认下CUDA和CUDALS的状态是否是YES:

--   NVIDIA CUDA:                   YES (ver 8.0, CUFFT CUBLAS FAST_MATH)
--     NVIDIA GPU arch:             20 30 35 37 50 52 60 61
--     NVIDIA PTX archs:
--
--   OpenCL:                        YES (no extra features)
--     Include path:                /home/badoo/opencv/opencv-3.4.0/3rdparty/include/opencl/1.2
--     Link libraries:              Dynamic load
--
--   Python 2:
--     Interpreter:                 /usr/bin/python2.7 (ver 2.7.6)
--     Libraries:                   /usr/lib/x86_64-linux-gnu/libpython2.7.so (ver 2.7.6)
--     numpy:                       /usr/local/lib/python2.7/dist-packages/numpy/core/include (ver 1.15.4)
--     packages path:               lib/python2.7/dist-packages
--
--   Python 3:
--     Interpreter:                 /usr/bin/python3 (ver 3.4.3)
--     Libraries:                   /usr/lib/x86_64-linux-gnu/libpython3.4m.so (ver 3.4.3)
--     numpy:                       /usr/lib/python3/dist-packages/numpy/core/include (ver 1.8.2)
--     packages path:               lib/python3.4/dist-packages

  之后,可以进行编译

make -j4 (-4个进程一起)
sudo make install

      正常情况下,会编译成功,如下

badoo@deeplearn:~/opencv/opencv-3.4.0/release$ python3
Python 3.4.3 (default, Nov 12 2018, 22:25:49) 
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> 

   如果发现编译成功,但是import cv2 失败了,说明我们在第一步build过程中python环境出现了问题,注意这部分

-- Found PythonInterp: /usr/bin/python2.7 (found suitable version "2.7.6", minimum required is "2.7")
-- Found PythonLibs: /usr/lib/x86_64-linux-gnu/libpython2.7.so (found suitable exact version "2.7.6")
-- Found PythonInterp: /usr/bin/python3 (found suitable version "3.4.3", minimum required is "3.4")
-- Found PythonLibs: /usr/lib/x86_64-linux-gnu/libpython3.4m.so (found suitable exact version "3.4.3")

    是否找到了符合编译需求的版本,如果错误是find not ...version 注意是我们的python libpython2/3.so没有找到,可以将我们自定义的libpython.so 文件拷贝到/usr/lib/x86_64-linux-gnu/ 中,重新编译,知道上述找到正确的python2,或者python3的so版本,之后编译,就可以生成我们需要的cv2.so 文件了

anaconda安装Opencv报错:Could NOT find PythonLibs: Found unsuitable version "2.7.6",

机器上装了两个python,一个是默认的,一个是anaconda。安装opencv时就报错了:

-- Found PythonInterp: /home/deeplp/anaconda2/bin/python2 (found suitable version "2.7.12", minimum required is "2.0")
-- Could NOT find PythonLibs: Found unsuitable version "2.7.6", but required is exact version "2.7.12" (found /usr/lib/x86_64-linux-gnu/libpython2.7.so)

 

这个错有什么影响呢?影响就是 编译好的opencv没有cv2.so文件。这样python就不可以用了。

怎么解决:

方法一:修改cmake.list,指定 pythonlib的路径。无奈我cmake根底浅,改来改去没有解决问题。有解决了的大神欢迎告诉我啊。

方法二:修改bashrc文件,把path中的anaconda路径去掉。这样就会 PythonInterp 和 PythonLibs都是系统默认的python路径了。

然后编译opencv顺利。

编译好后,将bashrc改回来。

将 cv2.so 拷贝到/home/youname/anaconda2/lib/python2.7/site-packages,之后就可以在conda下import cv2了如下

badoo@deeplearn:~/Desktop$ python
Python 2.7.15 |Anaconda, Inc.| (default, Dec 14 2018, 19:04:19) 
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> 

   坚持一件事,或许很难,但坚持下来一定很酷!^_^

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值