Visual Studio 2013/2015によるOpenCV3.1のコンパイル

#リンク
**Visual Studio2015を使ったOpenCV3.2に関する[最新の情報はこちら](http://qiita.com/fukushima1981/items/980dff52dbdd46d7ed99)**

#はじめに
[OpenCV3.1](https://github.com/Itseez/opencv)と[拡張機能(contrib)](https://github.com/Itseez/opencv_contrib)をgithubからダウンロードして，ソースからcmakeでslnを作ってVisual Studio2013/2015でコンパイルしたときのメモ．主要な外部ライブラリも組み込み済み．

実行環境は以下のとおり．

* OS: Windows 7 64 bit
* コンパイラ: Visual Studio2013/2015
* 外部ライブラリ
    * Qt5.4.2, 
    * VTK6.2.0
    * Eigen3.2.6
    * CUDA 7.5

**特記事項**

* 新たに追加されたsfmモジュールは，現状，公式にWindowsではコンパルできない．詳細は[公式のドキュメント](http://docs.opencv.org/master/db/db8/tutorial_sfm_installation.html#gsc.tab=0)
* Visual Studio 2015の場合はCuda関連モジュールがコンパイルできない．

#Visual Studio 2013の場合
[OpenCV3.0の前回と同じ流れ](http://qiita.com/fukushima1981/items/0c7a3e3a97bb545ea796)で必要ファイルを用意して，cmakeでコンパイル．

OpenCVのcmakeの詳しいやりかたは[こちら](http://www.buildinsider.net/small/opencv/07)

変更点として，TBBは現在のVisual Studio環境ではあまり効果的では無いのでVisual StudioデフォルトのConcurrencyを使うことにした([参考記事](http://qiita.com/fukushima1981/items/02d6c034ca0375496b65))．

**cmake関係**

* with Qtにチェック
    * QtのGUIがないとまともな開発がつらいので必須．ズームできたり，画像の保存がクリックが出来たり，トラックバーがコンパクトになったり，デフォルトと比べて格段に使いやすい．
* with Eigenにチェック
    * calib3d周りの関数でEigenの関数を使うようになる．（これまでは，EigenとOpenCVのMatrix形式変換くらいしか関数が無かった）
* GPUのcapabilityを限定する
    * 必要なcapabilityだけを指定できればコンパイル時間が減らせる．([参考記事](http://tessy.org/wiki/index.php?OpenCV2.4.10.1%A4%CE%A5%D3%A5%EB%A5%C9#c03bbddb))

#Visual Studio 2015の場合
* CUDAなしは2013と同様に実行して成功
* CUDAありは失敗．現在(2016/01/01)，最新のCUDA7.5はVisual Studio2015に対応していないため，with CUDAでコンパイルできない．
* VTKとQtは2013でコンパイルしたlibとdllをそのまま使った．Visual Studio2013のランタイムライブラリが入っていれば動く．

#環境を変えるときのチェックリスト
1. CUDAの確認
2. Qtの確認．自力コンパイルを避けるためにQt with OpenGLがダウンロードできるか確認
3. VTKの確認．上記でコンパイルできるかどうか．（現状，自分はVTKが無くても困らない）
4. TBBの確認（Visual StudioデフォルトのConcurrencyで十分なため無くてもOK）

#cmakeの出力
2015の例．※ただしCUDAは失敗する．

```
found IPP (ICV version): 9.0.1 [9.0.1]
at: C:/opencv-3.1.0/3rdparty/ippicv/unpack/ippicv_win
CUDA detected: 7.5
CUDA NVCC target flags: -gencode;arch=compute_30,code=sm_30;-gencode;arch=compute_30,code=compute_30
To enable PlantUML support, set PLANTUML_JAR environment variable or pass -DPLANTUML_JAR=<filepath> option to cmake
Could NOT find PythonInterp: Found unsuitable version "2.7.5", but required is at least "3.4" (found C:/Python27/python.exe)
Could NOT find PythonInterp: Found unsuitable version "2.7.5", but required is at least "3.2" (found C:/Python27/python.exe)
Could NOT find JNI (missing:  JAVA_AWT_LIBRARY JAVA_JVM_LIBRARY JAVA_INCLUDE_PATH JAVA_INCLUDE_PATH2 JAVA_AWT_INCLUDE_PATH) 
Could NOT find Matlab (missing:  MATLAB_MEX_SCRIPT MATLAB_INCLUDE_DIRS MATLAB_ROOT_DIR MATLAB_LIBRARIES MATLAB_LIBRARY_DIRS MATLAB_MEXEXT MATLAB_ARCH MATLAB_BIN) 
Found VTK ver. 6.2.0 (usefile: C:/VTK/lib/cmake/vtk-6.2/UseVTK.cmake)
Caffe:   NO
Protobuf:   NO
Glog:   NO
Could NOT find HDF5 (missing:  HDF5_LIBRARIES HDF5_INCLUDE_DIRS) 
Checking SFM deps... TRUE
CERES support is disabled. Ceres Solver for reconstruction API is required.
Tesseract:   NO
Could NOT find PROTOBUF (missing:  PROTOBUF_LIBRARY PROTOBUF_INCLUDE_DIR) 
Build libprotobuf from sources:
    libprotobuf not found into system
    The protocol buffer compiler not found
Tesseract:   NO
CMake Warning (dev) in modules/cvv/CMakeLists.txt:
  Policy CMP0020 is not set: Automatically link Qt executables to qtmain
  target on Windows.  Run "cmake --help-policy CMP0020" for policy details.
  Use the cmake_policy command to set the policy and suppress this warning.
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) in modules/highgui/CMakeLists.txt:
  Policy CMP0020 is not set: Automatically link Qt executables to qtmain
  target on Windows.  Run "cmake --help-policy CMP0020" for policy details.
  Use the cmake_policy command to set the policy and suppress this warning.
This warning is for project developers.  Use -Wno-dev to suppress it.


General configuration for OpenCV 3.1.0 =====================================
  Version control:               unknown

  Platform:
    Host:                        Windows 6.1.7601 AMD64
    CMake:                       3.4.0-rc1
    CMake generator:             Visual Studio 14 2015 Win64
    CMake build tool:            C:/Program Files (x86)/MSBuild/14.0/bin/MSBuild.exe
    MSVC:                        1900

  C/C++:
    Built as dynamic libs?:      YES
    C++ Compiler:                C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/x86_amd64/cl.exe  (ver 19.0.23506.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  /wd4251 /wd4324 /wd4275 /wd4589 /MP24  /MD /O2 /Ob2 /D NDEBUG  /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  /wd4251 /wd4324 /wd4275 /wd4589 /MP24  /D_DEBUG /MDd /Zi /Ob0 /Od /RTC1 
    C Compiler:                  C:/Program Files (x86)/Microsoft Visual Studio 14.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    /MP24  /MD /O2 /Ob2 /D NDEBUG  /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    /MP24  /D_DEBUG /MDd /Zi /Ob0 /Od /RTC1 
    Linker flags (Release):      /machine:x64  /INCREMENTAL:NO  /debug
    Linker flags (Debug):        /machine:x64  /debug /INCREMENTAL 
    Precompiled headers:         YES
    Extra dependencies:          comctl32 gdi32 ole32 setupapi ws2_32 Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Test Qt5::Concurrent Qt5::OpenGL vfw32 vtkRenderingOpenGL vtkImagingHybrid vtkIOImage vtkCommonDataModel vtkCommonMath vtkCommonCore vtksys vtkCommonMisc vtkCommonSystem vtkCommonTransforms vtkCommonExecutionModel vtkDICOMParser vtkIOCore vtkzlib vtkmetaio vtkjpeg vtkpng vtktiff vtkImagingCore vtkRenderingCore vtkCommonColor vtkFiltersExtraction vtkFiltersCore vtkFiltersGeneral vtkCommonComputationalGeometry vtkFiltersStatistics vtkImagingFourier vtkalglib vtkFiltersGeometry vtkFiltersSources vtkInteractionStyle vtkRenderingLOD vtkFiltersModeling vtkIOPLY vtkIOGeometry vtkjsoncpp vtkFiltersTexture vtkRenderingFreeType vtkfreetype vtkftgl vtkIOExport vtkRenderingAnnotation vtkImagingColor vtkRenderingContext2D vtkRenderingGL2PS vtkRenderingContextOpenGL vtkgl2ps vtkRenderingLabel glu32 opengl32 cudart nppc nppi npps cufft -LC:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v7.5/lib/x64
    3rdparty dependencies:       libprotobuf zlib libjpeg libwebp libpng libtiff libjasper IlmImf

  OpenCV modules:
    To be built:                 cudev core cudaarithm flann imgproc ml reg surface_matching video viz cudabgsegm cudafilters cudaimgproc cudawarping dnn fuzzy imgcodecs photo shape videoio cudacodec highgui objdetect plot ts xobjdetect xphoto bgsegm bioinspired dpm face features2d line_descriptor saliency text calib3d ccalib cudafeatures2d cudalegacy cudaobjdetect cudaoptflow cudastereo cvv datasets rgbd stereo structured_light superres tracking videostab xfeatures2d ximgproc aruco optflow stitching
    Disabled:                    contrib_world python2 sfm world
    Disabled by dependency:      -
    Unavailable:                 hdf java matlab python3

  Windows RT support:            NO

  GUI: 
    QT 5.x:                      YES (ver 5.4.2)
    QT OpenGL support:           YES (Qt5::OpenGL 5.4.2)
    OpenGL support:              YES (glu32 opengl32)
    VTK support:                 YES (ver 6.2.0)

  Media I/O: 
    ZLib:                        build (ver 1.2.8)
    JPEG:                        build (ver 90)
    WEBP:                        build (ver 0.3.1)
    PNG:                         build (ver 1.6.19)
    TIFF:                        build (ver 42 - 4.0.2)
    JPEG 2000:                   build (ver 1.900.1)
    OpenEXR:                     build (ver 1.7.1)
    GDAL:                        NO

  Video I/O:
    Video for Windows:           YES
    DC1394 1.x:                  NO
    DC1394 2.x:                  NO
    FFMPEG:                      YES (prebuilt binaries)
      codec:                     YES (ver 56.41.100)
      format:                    YES (ver 56.36.101)
      util:                      YES (ver 54.27.100)
      swscale:                   YES (ver 3.1.101)
      resample:                  NO
      gentoo-style:              YES
    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-3.1.0/3rdparty/ippicv/unpack/ippicv_win
    Use IPP Async:               NO
    Use Eigen:                   YES (ver 3.2.6)
    Use Cuda:                    YES (ver 7.5)
    Use OpenCL:                  YES
    Use custom HAL:              NO

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

  OpenCL:
    Version:                     dynamic
    Include path:                C:/opencv-3.1.0/3rdparty/include/opencl/1.2 C:/Program Files (x86)/AMD/clAmdFft/include C:/Program Files (x86)/AMD/clAmdBlas/include
    Use AMDFFT:                  YES
    Use AMDBLAS:                 YES

  Python 2:
    Interpreter:                 C:/Python27/python.exe (ver 2.7.5)

  Python 3:
    Interpreter:                 NO

  Python (for build):            C:/Python27/python.exe

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

  Matlab:                        Matlab not found or implicitly disabled

  Documentation:
    Doxygen:                     C:/Program Files/doxygen/bin/doxygen.exe (ver 1.8.10)
    PlantUML:                    NO

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

  Install path:                  C:/opencv-3.1.0/build/install

  cvconfig.h is in:              C:/opencv-3.1.0/build
-----------------------------------------------------------------
```