:OpenCV

概要

  • Jetson TX2が届いたので、:OpenCV 3.2をビルドしてみた
  • 結論から言うとJetsonTX2がOpenCV 3.2 より新しいので、CUDA関連のビルドがJetson TX2上で動かない。master か 3.3 以降(本文執筆時点では未リリース)を利用すること

前提準備

今回のターゲット

  • Jetson TX2
  • OS:Ubuntu 16.04
  • CPU:Denver2 Dual cores + Cortex-A57 Quad cores
  • OpenCV 3.2
  • cmake 3.5.1
  • gcc 5.4.0
  • CUDA 8.0

OpenCV の取得

  • gitでcloneして
  • 3.2.0をチェックアウトする
  • パスは適宜合わせて
    ~$ time git clone git@github.com:opencv/opencv.git opencv-fork
    ~$ cd opencv-fork/
    ~/opencv-fork$ time git checkout -b Branch_3_2_0 3.2.0
    Switched to a new branch 'Branch_3_2_0'
  • 詳細は割愛

OpenCV3.2.0のビルド

cmake

  • out of source buildする
    ~/opencv-fork$ mkdir build
    ~/opencv-fork$ cd build
    ~/opencv-fork/build$ time cmake ..
    (中略)
    
    real	0m54.185s
    user	0m38.120s
    sys	0m11.712s

make all

  • 6コアをフルに使ったビルドする
    ~/opencv-fork/build$ time make -j 6 all
    (中略)
    
    real	46m48.961s
    user	159m53.324s
    sys	5m45.232s

make install

  • installにはsudoをつける
    ~/opencv-fork/build$ time sudo make install
    (割愛)

OpenCVビルド時のコンフィグなど

cvconfig.h

  • 途中に記載されている通り、CUDA_ARCH_FEATURESが5.3になっており、これはJetsonTX1用のhard codedな値
  • Jetson TX2のCUDA_ARCH_FEATURESは6.2
    /* OpenCV compiled as static or dynamic libs */
    #define BUILD_SHARED_LIBS
    
    /* Compile for 'real' NVIDIA GPU architectures */
    #define CUDA_ARCH_BIN " 53"
    
    /* Create PTX or BIN for 1.0 compute capability */
    /* #undef CUDA_ARCH_BIN_OR_PTX_10 */
    
    /* NVIDIA GPU features are used */
    #define CUDA_ARCH_FEATURES " 53"
    
    /* Compile for 'virtual' NVIDIA PTX architectures */
    #define CUDA_ARCH_PTX ""
    
    /* AVFoundation video libraries */
    /* #undef HAVE_AVFOUNDATION */
    
    /* V4L capturing support */
    /* #undef HAVE_CAMV4L */
    
    /* V4L2 capturing support */
    #define HAVE_CAMV4L2
    
    /* Carbon windowing environment */
    /* #undef HAVE_CARBON */
    
    /* AMD's Basic Linear Algebra Subprograms Library*/
    /* #undef HAVE_CLAMDBLAS */
    
    /* AMD's OpenCL Fast Fourier Transform Library*/
    /* #undef HAVE_CLAMDFFT */
    
    /* Clp support */
    /* #undef HAVE_CLP */
    
    /* Cocoa API */
    /* #undef HAVE_COCOA */
    
    /* C= */
    /* #undef HAVE_CSTRIPES */
    
    /* NVidia Cuda Basic Linear Algebra Subprograms (BLAS) API*/
    /* #undef HAVE_CUBLAS */
    
    /* NVidia Cuda Runtime API*/
    #define HAVE_CUDA
    
    /* NVidia Cuda Fast Fourier Transform (FFT) API*/
    #define HAVE_CUFFT
    
    /* IEEE1394 capturing support */
    /* #undef HAVE_DC1394 */
    
    /* IEEE1394 capturing support - libdc1394 v2.x */
    /* #undef HAVE_DC1394_2 */
    
    /* DirectX */
    /* #undef HAVE_DIRECTX */
    /* #undef HAVE_DIRECTX_NV12 */
    /* #undef HAVE_D3D11 */
    /* #undef HAVE_D3D10 */
    /* #undef HAVE_D3D9 */
    
    /* DirectShow Video Capture library */
    /* #undef HAVE_DSHOW */
    
    /* Eigen Matrix & Linear Algebra Library */
    #define HAVE_EIGEN
    
    /* FFMpeg video library */
    /* #undef HAVE_FFMPEG */
    
    /* Geospatial Data Abstraction Library */
    /* #undef HAVE_GDAL */
    
    /* GStreamer multimedia framework */
    #define HAVE_GSTREAMER
    
    /* GTK+ 2.0 Thread support */
    #define HAVE_GTHREAD
    
    /* GTK+ 2.x toolkit */
    /* #undef HAVE_GTK */
    
    /* Define to 1 if you have the <inttypes.h> header file. */
    /* #undef HAVE_INTTYPES_H */
    
    /* Intel Perceptual Computing SDK library */
    /* #undef HAVE_INTELPERC */
    
    /* Intel Integrated Performance Primitives */
    /* #undef HAVE_IPP */
    /* #undef HAVE_IPP_ICV_ONLY */
    
    /* Intel IPP Async */
    /* #undef HAVE_IPP_A */
    
    /* JPEG-2000 codec */
    #define HAVE_JASPER
    
    /* IJG JPEG codec */
    #define HAVE_JPEG
    
    /* libpng/png.h needs to be included */
    #define HAVE_LIBPNG_PNG_H
    
    /* GDCM DICOM codec */
    /* #undef HAVE_GDCM */
    
    /* V4L/V4L2 capturing support via libv4l */
    /* #undef HAVE_LIBV4L */
    
    /* Microsoft Media Foundation Capture library */
    /* #undef HAVE_MSMF */
    
    /* NVidia Video Decoding API*/
    /* #undef HAVE_NVCUVID */
    
    /* NVidia Video Encoding API*/
    /* #undef HAVE_NVCUVENC */
    
    /* OpenCL Support */
    #define HAVE_OPENCL
    /* #undef HAVE_OPENCL_STATIC */
    /* #undef HAVE_OPENCL_SVM */
    
    /* OpenEXR codec */
    #define HAVE_OPENEXR
    
    /* OpenGL support*/
    /* #undef HAVE_OPENGL */
    
    /* OpenNI library */
    /* #undef HAVE_OPENNI */
    
    /* OpenNI library */
    /* #undef HAVE_OPENNI2 */
    
    /* PNG codec */
    #define HAVE_PNG
    
    /* Posix threads (pthreads) */
    #define HAVE_PTHREADS
    
    /* parallel_for with pthreads */
    #define HAVE_PTHREADS_PF
    
    /* Qt support */
    /* #undef HAVE_QT */
    
    /* Qt OpenGL support */
    /* #undef HAVE_QT_OPENGL */
    
    /* QuickTime video libraries */
    /* #undef HAVE_QUICKTIME */
    
    /* QTKit video libraries */
    /* #undef HAVE_QTKIT */
    
    /* Intel Threading Building Blocks */
    /* #undef HAVE_TBB */
    
    /* TIFF codec */
    #define HAVE_TIFF
    
    /* Unicap video capture library */
    /* #undef HAVE_UNICAP */
    
    /* Video for Windows support */
    /* #undef HAVE_VFW */
    
    /* V4L2 capturing support in videoio.h */
    /* #undef HAVE_VIDEOIO */
    
    /* Win32 UI */
    /* #undef HAVE_WIN32UI */
    
    /* XIMEA camera support */
    /* #undef HAVE_XIMEA */
    
    /* Xine video library */
    /* #undef HAVE_XINE */
    
    /* Define if your processor stores words with the most significant byte
       first (like Motorola and SPARC, unlike Intel and VAX). */
    /* #undef WORDS_BIGENDIAN */
    
    /* gPhoto2 library */
    /* #undef HAVE_GPHOTO2 */
    
    /* VA library (libva) */
    /* #undef HAVE_VA */
    
    /* Intel VA-API/OpenCL */
    /* #undef HAVE_VA_INTEL */
    
    /* Lapack */
    /* #undef HAVE_LAPACK */
    
    /* FP16 */
    #define HAVE_FP16
    
    /* Library was compiled with functions instrumentation */
    /* #undef ENABLE_INSTRUMENTATION */
    
    /* OpenVX */
    /* #undef HAVE_OPENVX */

version_string.inc

General configuration for OpenCV 3.2.0 =====================================
  Version control:               3.2.0

  Platform:
    Timestamp:                   2017-04-24T01:57:36Z
    Host:                        Linux 4.4.15-tegra aarch64
    CMake:                       3.5.1
    CMake generator:             Unix Makefiles
    CMake build tool:            /usr/bin/make
    Configuration:               Release

  C/C++:
    Built as dynamic libs?:      YES
    C++ Compiler:                /usr/bin/c++  (ver 5.4.0)
    C++ flags (Release):         -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wno-narrowing -Wno-delete-non-virtual-dtor -Wno-comment -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fvisibility=hidden -fvisibility-inlines-hidden -O3 -DNDEBUG  -DNDEBUG
    C++ flags (Debug):           -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wno-narrowing -Wno-delete-non-virtual-dtor -Wno-comment -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fvisibility=hidden -fvisibility-inlines-hidden -g  -O0 -DDEBUG -D_DEBUG
    C Compiler:                  /usr/bin/cc
    C flags (Release):           -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wno-narrowing -Wno-comment -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fvisibility=hidden -O3 -DNDEBUG  -DNDEBUG
    C flags (Debug):             -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wno-narrowing -Wno-comment -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fvisibility=hidden -g  -O0 -DDEBUG -D_DEBUG
    Linker flags (Release):
    Linker flags (Debug):
    ccache:                      NO
    Precompiled headers:         YES
    Extra dependencies:          /usr/lib/aarch64-linux-gnu/libpng.so /usr/lib/aarch64-linux-gnu/libz.so gthread-2.0 gstvideo-1.0 gstapp-1.0 gstbase-1.0 gstriff-1.0 gstpbutils-1.0 gstreamer-1.0 gobject-2.0 glib-2.0 dl m pthread rt cudart nppc nppi npps cufft -L/usr/local/cuda/lib64
    3rdparty dependencies:       libjpeg libwebp libtiff libjasper IlmImf tegra_hal

  OpenCV modules:
    To be built:                 cudev core cudaarithm flann imgproc ml video cudabgsegm cudafilters cudaimgproc cudawarping imgcodecs photo shape videoio cudacodec highgui objdetect ts features2d calib3d cudafeatures2d cudalegacy cudaobjdetect cudaoptflow cudastereo stitching superres videostab
    Disabled:                    world
    Disabled by dependency:      -
    Unavailable:                 java python2 python3 viz

  GUI: 
    QT:                          NO
    GTK+:                        NO
    GThread :                    YES (ver 2.48.2)
    GtkGlExt:                    NO
    OpenGL support:              NO
    VTK support:                 NO

  Media I/O: 
    ZLib:                        /usr/lib/aarch64-linux-gnu/libz.so (ver 1.2.8)
    JPEG:                        libjpeg (ver 90)
    WEBP:                        build (ver 0.3.1)
    PNG:                         /usr/lib/aarch64-linux-gnu/libpng.so (ver 1.2.54)
    TIFF:                        build (ver 42 - 4.0.2)
    JPEG 2000:                   build (ver 1.900.1)
    OpenEXR:                     build (ver 1.7.1)
    GDAL:                        NO
    GDCM:                        NO

  Video I/O:
    DC1394 1.x:                  NO
    DC1394 2.x:                  NO
    FFMPEG:                      NO
      avcodec:                   NO
      avformat:                  NO
      avutil:                    NO
      swscale:                   NO
      avresample:                NO
    GStreamer:                   
      base:                      YES (ver 1.8.3)
      video:                     YES (ver 1.8.3)
      app:                       YES (ver 1.8.3)
      riff:                      YES (ver 1.8.3)
      pbutils:                   YES (ver 1.8.3)
    OpenNI:                      NO
    OpenNI PrimeSensor Modules:  NO
    OpenNI2:                     NO
    PvAPI:                       NO
    GigEVisionSDK:               NO
    Aravis SDK:                  NO
    UniCap:                      NO
    UniCap ucil:                 NO
    V4L/V4L2:                    NO/YES
    XIMEA:                       NO
    Xine:                        NO
    gPhoto2:                     NO

  Parallel framework:            pthreads

  Other third-party libraries:
    Use IPP:                     NO
    Use VA:                      NO
    Use Intel VA-API/OpenCL:     NO
    Use Lapack:                  NO
    Use Eigen:                   YES (ver 3.2.92)
    Use Cuda:                    YES (ver 8.0)
    Use OpenCL:                  YES
    Use OpenVX:                  NO
    Use custom HAL:              YES (carotene (ver 0.0.1))

  NVIDIA CUDA
    Use CUFFT:                   YES
    Use CUBLAS:                  NO
    USE NVCUVID:                 NO
    NVIDIA GPU arch:             53
    NVIDIA PTX archs:
    Use fast math:               NO

  OpenCL:                        <Dynamic loading of OpenCL library>
    Include path:                /home/nvidia/opencv-fork/3rdparty/include/opencl/1.2
    Use AMDFFT:                  NO
    Use AMDBLAS:                 NO

  Python 2:
    Interpreter:                 /usr/bin/python2.7 (ver 2.7.12)

  Python 3:
    Interpreter:                 /usr/bin/python3 (ver 3.5.2)

  Python (for build):            /usr/bin/python2.7

  Java:
    ant:                         NO
    JNI:                         NO
    Java wrappers:               NO
    Java tests:                  NO

  Matlab:                        Matlab not found or implicitly disabled

  Documentation:
    Doxygen:                     NO

  Tests and samples:
    Tests:                       YES
    Performance tests:           YES
    C/C++ Examples:              NO

  Install path:                  /usr/local

  cvconfig.h is in:              /home/nvidia/opencv-fork/build
----------------------------------------------------------------- 

ビルドされたライブラリや実行ファイル

TBW

関連ページ


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-04-24 (月) 23:34:49 (214d)