#contents
#stub
#TBW

*概要 [#f1df7aa0]
-2016-12-23(日本時間)にOpenCV 3.2が[[Releaseされた>https://github.com/opencv/opencv/releases/tag/3.2.0]]&note{opencv-3-2-has-been-release:[[Release OpenCV 3.2.0 · opencv/opencv>https://github.com/opencv/opencv/releases/tag/3.2.0]], 2016-12-23公開, 2016-12-24閲覧, Ver 3.2};
-3.1のときと同様、クリスマスだしりりーすしようぜぇ〜って雰囲気がプンプンに漂うなぁ
-Windows で OpenCV 3.2 をビルドする
-ターゲットはWindows 7 (64bit)
-ビルドはx64ビルド
-CMake のバージョンは3.6.1
-Visual Studio 2012 でビルド
-CUDA は8.0
-Gitでソースコードを取ってくる

**ソースコードのダウンロード [#h66a80d0]
-git でリポジトリをクローンしてくる。URL は git://github.com/opencv/opencv.git 
 git.exe clone --progress -v "git://github.com/opencv/opencv.git" "C:\work\opencv-fork"
-OpenCV3.1がリリースされた後、IntelによるItseezの買収があったので、URLが変わった
-今回は予めclone してあったので、fetchしてcheckoutする
-取得したリポジトリから、Tagの3.2.0にスイッチする
-今回はWindowsのTortoiseGitを使ったので、添付図の様に、TortoiseGit→Switch/Checkoutを選択
#ref(OpenCV2.4.10のビルド/switch_checkout_git.png)
-Switch To で Tag から3.2.0を選択する
#ref(OpenCV2.4.10のビルド/003checkout.png)
-Switchされるのを待つ
#ref(OpenCV2.4.10のビルド/004checkout.png)

**ビルド前準備 [#id987b54]
-cmakeでソリューションファイルを作成する
-cmake(GUI版を起動する)
-Sourceの場所を指定する
--今回はc:\work\opencv-fork
-Buildの場所を指定する
--今回は c:\work\opencv-fork\build を指定する。
-Configureボタンを押す
-c:\work\opencv-fork\build が無いと文句を言われるので、ディレクトリの作成に同意する
#ref(005cmake-notify.png)
-コンパイラのバージョンを聞かれるので、Visual Studio 2012 Win64を指定する&note{build-x64:要は64bit版ビルド。CUDA7.5では6.0と違い、nppc、nppi、nppsなどのライブラリが64bit版しか同梱されておらず、32bit版には含まれていないため};
--違うコンパイラを指定する場合はここでターゲットを変更する
--Visual Studio 2012 は VS11なので注意
#ref(005-cmake-compiler-20160728.png)
-Configureボタンを押す
-ガリガリCMakeが動いて、オプション一覧及び有効/無効が表示される
#ref(005cmake-20160728.png)
-自分のGPUに合わせて適切なCUDA_ARCHを設定する(私の場合は3.0)
#ref(008cmake-configure-20160728.png)
-Generateボタンを押す
#ref(009cmake-generate-20160728.png)
-指定したディレクトリ内に OpenCV.sln ができている
#ref(010cmake-solution.png)

**ソースコードのビルド [#xe07853b]
-ざっくり1時間50分ほどかかった

*OpenCVビルド時のコンフィグなど [#h437714b]
**cvconfig.h [#l8ae85f6]
#geshi(c++){{
/* OpenCV compiled as static or dynamic libs */
#define BUILD_SHARED_LIBS

/* Compile for 'real' NVIDIA GPU architectures */
#define CUDA_ARCH_BIN " 30"

/* 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 " 30"

/* 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 */
/* #undef 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 */
#define HAVE_DIRECTX
#define HAVE_DIRECTX_NV12
#define HAVE_D3D11
#define HAVE_D3D10
#define HAVE_D3D9

/* DirectShow Video Capture library */
#define HAVE_DSHOW

/* Eigen Matrix & Linear Algebra Library */
/* #undef HAVE_EIGEN */

/* FFMpeg video library */
#define HAVE_FFMPEG

/* Geospatial Data Abstraction Library */
/* #undef HAVE_GDAL */

/* GStreamer multimedia framework */
/* #undef HAVE_GSTREAMER */

/* GTK+ 2.0 Thread support */
/* #undef 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 */
#define HAVE_IPP
#define 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 */
/* #undef 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) */
/* #undef HAVE_PTHREADS */

/* parallel_for with pthreads */
/* #undef 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 */
#define HAVE_VFW

/* V4L2 capturing support in videoio.h */
/* #undef HAVE_VIDEOIO */

/* Win32 UI */
#define 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 */
}}
-無事、私が書いたFP16関連の機能が日の目を見ることに。(HAVE_FP16はFP16のHW命令対応のコンパイルを行うということ)

**version_string.inc [#uf1d4514]
 
 General configuration for OpenCV 3.2.0 =====================================
   Version control:               3.2.0
 
   Platform:
     Timestamp:                   2016-12-23T19:01:20Z
     Host:                        Windows 6.1.7601 AMD64
     CMake:                       3.6.1
     CMake generator:             Visual Studio 11 2012 Win64
     CMake build tool:            C:/Windows/Microsoft.NET/Framework/v4.0.30319/MSBuild.exe
     MSVC:                        1700
 
   C/C++:
     Built as dynamic libs?:      YES
     C++ Compiler:                C:/Program Files (x86)/Microsoft Visual Studio 11.0/VC/bin/x86_amd64/cl.exe  (ver 17.0.61030.0)
     C++ flags (Release):         /DWIN32 /D_WINDOWS /W4 /GR /EHa  /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /Oi  /wd4127 /wd4251 /wd4324 /wd4275 /wd4589 /MP8  /MD /O2 /Ob2 /DNDEBUG  /Zi
     C++ flags (Debug):           /DWIN32 /D_WINDOWS /W4 /GR /EHa  /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /Oi  /wd4127 /wd4251 /wd4324 /wd4275 /wd4589 /MP8  /D_DEBUG /MDd /Zi /Ob0 /Od /RTC1 
     C Compiler:                  C:/Program Files (x86)/Microsoft Visual Studio 11.0/VC/bin/x86_amd64/cl.exe
     C flags (Release):           /DWIN32 /D_WINDOWS /W3  /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /Oi    /MP8  /MD /O2 /Ob2 /DNDEBUG  /Zi
     C flags (Debug):             /DWIN32 /D_WINDOWS /W3  /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /Oi    /MP8  /D_DEBUG /MDd /Zi /Ob0 /Od /RTC1 
     Linker flags (Release):      /machine:x64  /INCREMENTAL:NO  /debug
     Linker flags (Debug):        /machine:x64  /debug /INCREMENTAL 
     ccache:                      NO
     Precompiled headers:         YES
     Extra dependencies:          comctl32 gdi32 ole32 setupapi ws2_32 vfw32 cudart nppc nppi npps cufft -LIBPATH:C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v8.0/lib/x64
     3rdparty dependencies:       zlib libjpeg libwebp libpng libtiff libjasper IlmImf
 
   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
 
   Windows RT support:            NO
 
   GUI: 
     QT:                          NO
     Win32 UI:                    YES
     OpenGL support:              NO
     VTK support:                 NO
 
   Media I/O: 
     ZLib:                        build (ver 1.2.8)
     JPEG:                        build (ver 90)
     WEBP:                        build (ver 0.3.1)
     PNG:                         build (ver 1.6.24)
     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:
     Video for Windows:           YES
     DC1394 1.x:                  NO
     DC1394 2.x:                  NO
     FFMPEG:                      YES (prebuilt binaries)
       avcodec:                   YES (ver 57.64.101)
       avformat:                  YES (ver 57.56.100)
       avutil:                    YES (ver 55.34.100)
       swscale:                   YES (ver 4.2.100)
       avresample:                YES (ver 3.1.0)
     GStreamer:                   NO
     OpenNI:                      NO
     OpenNI PrimeSensor Modules:  NO
     OpenNI2:                     NO
     PvAPI:                       NO
     GigEVisionSDK:               NO
     DirectShow:                  YES
     Media Foundation:            NO
     XIMEA:                       NO
     Intel PerC:                  NO
 
   Parallel framework:            Concurrency
 
   Other third-party libraries:
     Use IPP:                     9.0.1 [9.0.1]
          at:                     C:/opencv/build/3rdparty/ippicv/ippicv_win
     Use IPP Async:               NO
     Use Lapack:                  NO
     Use Eigen:                   NO
     Use Cuda:                    YES (ver 8.0)
     Use OpenCL:                  YES
     Use OpenVX:                  NO
     Use custom HAL:              NO
 
   NVIDIA CUDA
     Use CUFFT:                   YES
     Use CUBLAS:                  NO
     USE NVCUVID:                 NO
     NVIDIA GPU arch:             30
     NVIDIA PTX archs:
     Use fast math:               NO
 
   OpenCL:                        <Dynamic loading of OpenCL library>
     Include path:                C:/work/opencv-fork/3rdparty/include/opencl/1.2
     Use AMDFFT:                  NO
     Use AMDBLAS:                 NO
 
   Python 2:
     Interpreter:                 NO
 
   Python 3:
     Interpreter:                 NO
 
   Python (for build):            NO
 
   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:                  C:/opencv/build/install
 
   cvconfig.h is in:              C:/opencv/build
 -----------------------------------------------------------------
 

*ビルドに要した時間Top10 [#kdbc46b3]
** Releaseのdll [#vc3b01dd]
+opencv_cudafilters320.dll  (15:14.3s)
+opencv_cudaarithm320.dll  (08:18.1s)
+opencv_cudaoptflow320.dll  (04:22.9s)
+opencv_cudaimgproc320.dll  (03:12.0s)
+opencv_cudalegacy320.dll  (02:05.0s)
+opencv_cudafeatures2d320.dll  (01:48.0s)
+opencv_cudawarping320.dll  (01:38.3s)
+opencv_imgcodecs320.dll  (01:11.0s)
+opencv_cudastereo320.dll  (01:08.3s)
+opencv_core320.dll  (00:58.7s)


** Debugのdll [#pa13228f]
+opencv_cudafilters320d.dll  (14:51.8s)
+opencv_cudaarithm320d.dll  (07:46.3s)
+opencv_cudaoptflow320d.dll  (03:57.4s)
+opencv_cudaimgproc320d.dll  (02:43.6s)
+opencv_cudalegacy320d.dll  (01:38.7s)
+opencv_cudafeatures2d320d.dll  (01:22.8s)
+opencv_cudawarping320d.dll  (01:13.9s)
+opencv_cudastereo320d.dll  (00:44.2s)
+opencv_core320d.dll  (00:28.8s)
+opencv_videostab320d.dll  (00:20.5s)

** Releaaseのexe [#ka80655f]
+opencv_test_cudev.exe  (04:23.1s)
+opencv_visualisation.exe  (01:10.3s)
+opencv_perf_core.exe  (34.3s)
+opencv_perf_imgproc.exe  (31.5s)
+opencv_test_core.exe  (29.2s)
+opencv_test_imgproc.exe  (28.6s)
+opencv_test_cudaarithm.exe  (20.8s)
+opencv_perf_cudaarithm.exe  (20.5s)
+opencv_test_cudafilters.exe  (13.6s)
+opencv_perf_features2d.exe  (12.5s)


** Debugのexe [#d5a4c831]
+opencv_test_cudevd.exe  (04:03.4s)
+opencv_perf_cored.exe  (29.6s)
+opencv_perf_imgprocd.exe  (28.9s)
+opencv_test_imgprocd.exe  (24.3s)
+opencv_test_cored.exe  (22.2s)
+opencv_test_cudaarithmd.exe  (19.8s)
+opencv_perf_cudaarithmd.exe  (15.7s)
+opencv_test_cudafiltersd.exe  (13.4s)
+opencv_perf_features2dd.exe  (12.0s)
+opencv_test_cudafeatures2dd.exe  (10.3s)

**OpenCVのVersion [#ve88163e]
-OpenCV 3.2 から、versionおよびコンフィグ情報を吐き出す実行プログラム opencv_version が追加された
 $ ./opencv_version
 3.2.0
-なお、 -v オプションで version_string.inc と同等の情報が出力される

*関連ページ [#h36ede1e]
-[[OpenCV3.2-RCのビルド]]
-[[OpenCV3.1のビルド]]
-[[OpenCV3.0.0のビルド]]
-[[OpenCV3.0.0-betaのビルド]]
-[[OpenCV3.0.0-alphaのビルド]]
-[[OpenCV2.4.10.1のビルド]]
-[[OpenCV2.4.10のビルド]]
-[[OpenCV2.4.9のビルド]]
-[[OpenCV2.4.8のビルド]]
-[[OpenCV2.1と2.2に見るビルド方法の違い]]
-[[:OpenCV 3.0]]
-[[:OpenCV 3.2]]
-[[:OpenCV]]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS