OpenCV の make install の対象フォルダを変更する方法


環境  
Ubuntu16.04

以下のようにOpencvをビルドすると、`make install`でcv2.soが`/usr/local/lib/python2.7/dist-
packages/cv2.so`にコピーされるのですが、これを`make
install`でpython3.6の`/usr/local/lib/python3.6/dist-packages/cv2.so`  
にコピーされるように変更したいのですが、どの部分で設定を変更すればよいのでしょうか。

以下行ったこと

[code]

    git clone https://github.com/opencv/opencv.git
    cd opencv
    mkdir build
    cd build
    cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D ..
    make 
    make install
    
[/code]




cmakeのコマンドを実行後、メッセージに以下のようなPythonのサポート情報が表示されるので、それを見ると問題がどこにあるかわかると思います。

[code]

    --   Python 3:
    --     Interpreter:                 /usr/bin/python3 (ver 3.5.2)
    --     Libraries:                   /usr/lib/x86_64-linux-gnu/libpython3.5m.so (ver 3.5.2)
    --     numpy:                       /usr/lib/python3/dist-packages/numpy/core/include (ver 1.11.0)
    --     packages path:               lib/python3.5/dist-packages
    -- 
    --   Python (for build):            /usr/bin/python2.7
    -- 
    
[/code]

cmakeで、PYTHON2(3)_EXECUTABLE等のオプションを付けなかった場合は、ubuntu16.04付属のPython2.7とPython3.5を自動的に検出します。Python2.7の方が正常にビルドされてインストールされたのはそういう理由です。Python3.5の方はnumpyがインストールされていれば正常にビルドされますがnumpyがなければ何もしません。

Python3.6の方にインストールしたい場合には、cmakeにオプションを追加する必要があるので、opencvの公式マニュアルを探したところ以下の記載がありました。

[code]

    [optional] Building python. Set the following python parameters:
    
    PYTHON2(3)_EXECUTABLE = <path to python>
    PYTHON_INCLUDE_DIR = /usr/include/python<version>
    PYTHON_INCLUDE_DIR2 = /usr/include/x86_64-linux-gnu/python<version>
    PYTHON_LIBRARY = /usr/lib/x86_64-linux-gnu/libpython<version>.so
    PYTHON2(3)_NUMPY_INCLUDE_DIRS = /usr/lib/python<version>/dist-packages/numpy/core/include/
    
[/code]

最終的には、以下のオプションを追加するとpython3.6でmakeすることができました。オプションの値はPython3.6をソースからコンパイルして既定の設定でインストールした場合のものです。環境に応じて変更してください。

[code]

    PYTHON3_EXECUTABLE=/usr/local/bin/python3.6
    PYTHON3_INCLUDE_DIR=/usr/local/include/python3.6m
    PYTHON3_PACKAGES_PATH=/usr/local/lib/python3.6/site-packages
    
[/code]

なお、簡単にopencvをインストールしたい場合はopencv-
pythonというアンオフィシャルのパッケージがあるのでそれを使ってインストールすることもできます。

[code]

    pip install opencv-python 
    
[/code]




cmakeのコマンドを実行後、メッセージに以下のようなPythonのサポート情報が表示されるので、それを見ると問題がどこにあるかわかると思います。

[code]

    --   Python 3:
    --     Interpreter:                 /usr/bin/python3 (ver 3.5.2)
    --     Libraries:                   /usr/lib/x86_64-linux-gnu/libpython3.5m.so (ver 3.5.2)
    --     numpy:                       /usr/lib/python3/dist-packages/numpy/core/include (ver 1.11.0)
    --     packages path:               lib/python3.5/dist-packages
    -- 
    --   Python (for build):            /usr/bin/python2.7
    -- 
    
[/code]

cmakeで、PYTHON2(3)_EXECUTABLE等のオプションを付けなかった場合は、ubuntu16.04付属のPython2.7とPython3.5を自動的に検出します。Python2.7の方が正常にビルドされてインストールされたのはそういう理由です。Python3.5の方はnumpyがインストールされていれば正常にビルドされますがnumpyがなければ何もしません。

Python3.6の方にインストールしたい場合には、cmakeにオプションを追加する必要があるので、opencvの公式マニュアルを探したところ以下の記載がありました。

[code]

    [optional] Building python. Set the following python parameters:
    
    PYTHON2(3)_EXECUTABLE = <path to python>
    PYTHON_INCLUDE_DIR = /usr/include/python<version>
    PYTHON_INCLUDE_DIR2 = /usr/include/x86_64-linux-gnu/python<version>
    PYTHON_LIBRARY = /usr/lib/x86_64-linux-gnu/libpython<version>.so
    PYTHON2(3)_NUMPY_INCLUDE_DIRS = /usr/lib/python<version>/dist-packages/numpy/core/include/
    
[/code]

最終的には、以下のオプションを追加するとpython3.6でmakeすることができました。オプションの値はPython3.6をソースからコンパイルして既定の設定でインストールした場合のものです。環境に応じて変更してください。

[code]

    PYTHON3_EXECUTABLE=/usr/local/bin/python3.6
    PYTHON3_INCLUDE_DIR=/usr/local/include/python3.6m
    PYTHON3_PACKAGES_PATH=/usr/local/lib/python3.6/site-packages
    
[/code]

なお、簡単にopencvをインストールしたい場合はopencv-
pythonというアンオフィシャルのパッケージがあるのでそれを使ってインストールすることもできます。

[code]

    pip install opencv-python 
    
[/code]

