zoukankan      html  css  js  c++  java
  • opencv ffmpeg

    Compiling OpenCV with CUDA and FFMpeg on Ubuntu 16.04

    Goal: Compile OpenCV 3.X using CUDA and FFMpeg to accelerate Deep Learning applications consisting image/video processing

     

    Environment:

    Operating System => Linux Ubuntu 16.04 LTS

    Python => Anaconda Python 3.5.4

    CUDA => release 9.0, V9.0.176

    OpenCV => 3.3.1

     

    GPU and OpenCV

     

    GPU-accelerated computing offloads compute-intensive portions of the application to the GPU, while the remainder of the code still runs on the CPU. From a user's perspective, applications simply run much faster.

     

    Significant part of Computer Vision is image processing, the area that graphics accelerators were originally designed for. Other parts also support massive parallel computations and often naturally map to GPU architectures.

     

    OpenCV GPU module is written using CUDA, therefore it benefits from the CUDA ecosystem.

     

    The GPU module is designed as host API extension. This design provides the user an explicit control on how data is moved between CPU and GPU memory. Although the user has to write some additional code to start using the GPU, this approach is both flexible and allows more efficient computations. In general, it is a good idea to develop the application using the CPU part of OpenCV, and then accelerate it with the GPU module.

     

    A comparison of performance on CPU and GPU provided below:

    Reference link is provided in the end which describes the test and conditions

     

    Tesla C2050 versus Core i5-760 2.8Ghz, SSE, TBB

     

     
     

     

    FFMpeg and OpenCV

     

    OpenCV can use the FFmpeg library (http://ffmpeg.org/) as backend to record, convert and stream audio and video. FFMpeg is a complete, cross-reference solution. If you enable FFmpeg while configuring OpenCV, then CMake will download and install the binaries in OPENCV_SOURCE_CODE/3rdparty/ffmpeg/. To use FFMpeg at runtime, you must deploy the FFMepg binaries with your application.

     
     

    Install OpenCV 3.3 with Cuda 9.0

     

    Prerequisites:

     

    1. Python environment (anaconda/conda).

    2. CUDA 9.0 libraries installed

     

    Steps:

     

    Step 1: Update/Upgrade pre-installed packages:

     

    $sudo apt-get update

    $sudo apt-get upgrade

     

     

    Step 2: Install developer tools used to compile OpenCV 3.X:

     

    $sudo apt-get install build-essential cmake pkg-config

     

    Step 3: Install libraries and packages used to read various image formats from disk

     

    $sudo apt-get install libjpeg8-dev libtiff5-dev libjasper-dev libpng12-dev

     

    Step 4: Install a few libraries used to read video formats from disk.

     

    $sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev

    $sudo apt-get install libxvidcore-dev libx264-dev

     

    Step 5:Install GTK so we can use OpenCV’s GUI features

     

    $sudo apt-get install libgtk-3-dev

     

    Step 6: Install packages that are used to optimize various functions inside OpenCV, such as matrix operations

     

    $sudo apt-get install libatlas-base-dev gfortran

     

    Step 7: Clone open cv from github. Make sure you have git installed.

     

    $git clone https://github.com/opencv/opencv.git

    $cd opencv

    $git checkout 3.3.1

    $cd ..

     

    Step 8: Clone opencv_contrib from github.

     

    $git clone https://github.com/opencv/opencv_contrib.git

    $cd opencv_contrib

    $git checkout 3.3.1

    $cd ..

     

     

     

    Note: Please make sure that you checkout the same version for opencv_contrib that you did for opencv above, otherwise you could run into compilation errors.

     

    Step 9: Now set up the build

     

    $cd opencv

    $mkdir build

    $cd build

     

    Step 10: Run cmake command with appropriate options

     

    $cmake -D CMAKE_BUILD_TYPE=RELEASE

    -D CMAKE_INSTALL_PREFIX=/usr/local

    -D INSTALL_C_EXAMPLES=ON

    -D INSTALL_PYTHON_EXAMPLES=ON

    -D OPENCV_EXTRA_MODULES_PATH=<<Directory>>/opencv_contrib/modules

    -D BUILD_EXAMPLES=ON

    -D BUILD_opencv_python2=OFF

    -D WITH_FFMPEG=1

    -D WITH_CUDA=ON

    -D CUDA_GENERATION=Pascal

    -D ENABLE_FAST_MATH=1

    -D CUDA_FAST_MATH=1

    -D WITH_CUBLAS=1

    -D PYTHON_DEFAULT_EXECUTABLE=/opt/anaconda/bin/python

    -D PYTHON3_INCLUDE_DIR=/opt/anaconda/include/python3.5m

    -D PYTHON3_LIBRARY=/opt/anaconda/lib/libpython3.5m.so

    -D PYTHON3_PACKAGES_PATH=/opt/anaconda/lib/python3.5

    -D WITH_LAPACK=OFF

    -D PYTHON3_NUMPY_INCLUDE_DIRS=/opt/anaconda/lib/python3.5/site-packages/numpy/core/include ..

     

     

    Note:

    [if !supportLists]

    • Replace the <<Directory>> with path where opencv_contrib is cloned

    • For CUDA_GENERATION, change architecture accordingly (Pascal in our case).

    • Change Python related directories as per your installation

    • WITH_FFMPEG flag decided on compilation with FFMpeg

     

    Verify the configuration before proceeding. Python (for build) and NVIDIA CUDA in particular.

     

     
     

     

     

     

    Step 10: Make the build now.

     

    $make -j16

     

    Where number 16 should be replaced with the number of available cores on your processor to speedup the compilation time.

     

    Step 11: Install OpenCV

     

    $sudo make install

     

    Step 11: To access OpenCV from Python, add environment variables in .bashrc

    (Change directory as per your installation. The directory site-packages contains shared object cv2.cpython-35m-x86_64-linux-gnu.so after successful installation.)

     

    export PYTHONPATH=$PYTHONPATH:/opt/anaconda/lib/python3.5/site-packages

    export LD_LIBRARY_PATH=/opt/anaconda/lib${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

     

    Step 12: Verify opencv import in Python

     

    $ python

    Python 3.5.4 |Anaconda, Inc.| (default, Nov 20 2017, 18:44:38) [GCC 7.2.0] on linux

    Type "help", "copyright", "credits" or "license" for more information.

    >>> import cv2

    >>> cv2.__version__

    '3.3.1'

    >>>

     

    C++ codes can be tested as well. A set of sample programs are provided with OpenCV.

     

    References:

    1. Realtime Computer Vision with OpenCV: http://queue.acm.org/detail.cfm?id=2206309

    2. CUDA with OpenCV: https://opencv.org/platforms/cuda.html

  • 相关阅读:
    jsonp跨域+ashx(示例)
    小菜学习Winform(六)剪切板和拖放复制
    小菜学习Winform(五)窗体间传递数据
    小菜学习Winform(四)MDI窗体(附示例)
    小菜学习设计模式(四)—原型(Prototype)模式
    docker常用命令
    confluence知识管理、团队协作软件
    摩拜单车模式优于OFO双向通信才能被认可
    爬虫解决网页重定向问题
    linux 7z 命令编译安装,mac安装p7zip
  • 原文地址:https://www.cnblogs.com/wangshuyi/p/14331720.html
Copyright © 2011-2022 走看看