欢迎大家访问我的博客!

Ubuntu16.04下源码编译GPU版本OpenCV(FFmpeg+CUDA支持)

计算机视觉 peike 2117℃ 0评论

Install GPU version OpenCV on Unbuntu16.04(FFmpeg and CUDA support)

由于项目需求我们需要用GPU加速处理视频来计算光流,因此需要在Ubuntu 16.04下手动编译OpenCV 2.4.13, 并提供对FFmpeg以及CUDA 8的支持来使用GPU加速视频图像处理.这里我们假定已经安装好了CUDA 8, 如果还没有安装CUDA 8环境可以参考这里进行安装,

https://github.com/facebook/fbcunn/blob/master/INSTALL.md

安装OpenCV依赖包

首先我们安装一些OpenCV需要的依赖包,

安装官方必装包

sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

安装官方推荐包

sudo apt-get install  python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

安装OpenGL支持所需的包

sudo apt-get install freeglut3-dev mesa-common-dev  libgtkglext1 libgtkglext1-dev

安装视频处理所需的包

sudo apt-get install checkinstall yasm libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev libtbb-dev libqt4-dev libgtk2.0-dev libmp3lame-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils

可以根据自己的需求进行选择安装. 这里我在安装时, 大部分包服务器上都已经安装好了, 由于我没有服务器的root权限, 我在个人目录下源码编译安装了FFmpeg.

从http://ffmpeg.org/download.html下载ffmpeg,

tar -xjf ffmpeg-3.2.4.tar.bz2
cd ffmpeg-3.2.4
mkdir YOUR_PATH/ffmpeg
./configure --enable-shared --prefix=/YOUR_PATH/ffmpeg
make -j16
make install

其中YOUR_PATH替换为你自己想要的安装目录, 编译后在.bashrc文件中添加一下环境变量PKG_CONFIG_PATH以及PATH:

export PATH="/YOUR_PATH/ffmpeg/bin:/YOUR_PATH/ffmpeg/include:$PATH"
export PKG_CONFIG_PATH="/YOUR_PATH/ffmpeg/lib/pkgconfig:$PKG_CONFIG_PATH"   

在Shell中输入ffmpeg测试一下, 输出正常如果没有报错应该就没有什么问题.

下载OpenCV源码

下载OpenCV, 可以通过git获取官方最新的版本, 然后切换到自己所需要的2.4.13进行编译:

git clone https://github.com/opencv/opencv.git 
cd opencv
git checkout 2.4.13.2

或者通过wget下载官方最新2.4.13版源码包并解压:

wget https://github.com/opencv/opencv/archive/2.4.13.6.tar.gz
tar -zxvf 2.4.13.6.tar.gz

编译OpenCV

cd opencv-2.4.13.6
mkdir build
cd build
cmake \
    -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D WITH_CUDA=ON \
    -D WITH_CUBLAS=ON \
    -D CUDA_FAST_MATH=ON \
    -D WITH_CUFFT=ON \
    -D WITH_QT=ON \
    -D WITH_NVCUVID=ON \
    -D WITH_V4L=ON \
    -D WITH_LIBV4L=ON \
    -D WITH_OPENGL=ON \
    -D WITH_FFMPEG=ON \
    -D INSTALL_C_EXAMPLES=ON \
    -D BUILD_EXAMPLES=ON \
    -D BUILD_TIFF=ON \
    ..

这里根据自己的需求设置编译选项, 更多cmake选项可以查看OpenCV源码目录下的CMakeLists.txt文件内容。其中-D CMAKE_INSTALL_PREFIX为编译后库文件的安装的位置, 因为我没有服务器的root权限在安装时将该路径改为我个人目录下, 如果你有root权限的话可以不用更改, 后文这一路径也会多次用到, 不要搞错了. 如果没有加上-D BUILD_TIFF=ON的选项,这样在make的时候可能会遇上LIBTIFF_4.0 link errors. 由于我的服务器没有安装QT, 我将-D WITH_QT=ON
选项删除了.

在cmake打印的信息中重点检查下Video IO, CUDA和CUBALS的状态是否是YES:

--   Video I/O:
--     DC1394 1.x:                  NO
--     DC1394 2.x:                  YES (ver 2.2.4)
--     FFMPEG:                      YES
--       avcodec:                   YES (ver 56.60.100)
--       avformat:                  YES (ver 56.40.101)
--       avutil:                    YES (ver 54.31.100)
--       swscale:                   YES (ver 3.1.101)
--       avresample:                NO
--     GStreamer:                   
--       base:                      YES (ver 0.10.36)
--       video:                     YES (ver 0.10.36)
--       app:                       YES (ver 0.10.36)
--       riff:                      YES (ver 0.10.36)
--       pbutils:                   YES (ver 0.10.36)
--     OpenNI:                      NO
--     OpenNI PrimeSensor Modules:  NO
--     PvAPI:                       NO
--     GigEVisionSDK:               NO
--     UniCap:                      NO
--     UniCap ucil:                 NO
--     V4L/V4L2:                    Using libv4l1 (ver 1.10.0) / libv4l2 (ver 1.10.0)
--     XIMEA:                       NO
--     Xine:                        NO
-- 
--   Other third-party libraries:
--     Use IPP:                     NO
--     Use Eigen:                   NO
--     Use TBB:                     NO
--     Use OpenMP:                  NO
--     Use GCD                      NO
--     Use Concurrency              NO
--     Use C=:                      NO
--     Use Cuda:                    YES (ver 8.0)
--     Use OpenCL:                  YES
-- 
--   NVIDIA CUDA
--     Use CUFFT:                   YES
--     Use CUBLAS:                  YES
--     USE NVCUVID:                 YES
--     NVIDIA GPU arch:             20 21 30 35
--     NVIDIA PTX archs:            30
--     Use fast math:               YES
--     Tiny gpu module:             NO

下面使用make进行多线程编译, 线程数根据自己的机器确定:

make -j 16
sudo make install

喝杯咖啡, 回来应该就安装好了.

配置Python包以及库搜索路径

安装完成之后, 可以在定义的路径-D CMAKE_INSTALL_PREFIX 下lib/python2.7/site-packages发现有2个文件. 我们将其复制到我们自己Python环境中,这里我用的是Anaconda版本.

cp /usr/local/lib/python2.7/site-packages/cv* ~/anaconda2/lib/python2.7/site-packages/

这样在自已的python环境中就可导入cv2了.

python -c 'import cv2'

这里我们测试一下,如果没有输出应该python包就安装成功.

配置完成python包后, 我们配置一下库搜索路径, 如果有root权限的话.

sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
sudo ldconfig

如果你没有root权限的话, 在.bashrc文件中添加一下环境变量PKG_CONFIG_PATH:

export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig"

然后更新一下.bashrc文件,

source ~/.bashrc

最后输入,

pkg-config --libs opencv

查看链接路径,如果没有问题的话就配置成功了.

可能遇到的错误

cmake时可能会提示找不到某些包, 根据报错信息安装相应的包就可以了. 如果确认已经安装好了, 八成是路径问题, 系统找不到需要的包, 这时配置一下环境变量以及相关路径.

文章发布时间: 2018-01-30 13:15

最后修改于: 2018-08-06 14:18

原始链接: http://www.peikeli.com/computer-vision/opencv-installation/

转载请注明: 万物比特 » Ubuntu16.04下源码编译GPU版本OpenCV(FFmpeg+CUDA支持)

版权协议: 本作品采用©知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可

喜欢 (42)or分享 (0)
发表我的评论
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址