Ubuntu16.04のPython3でOpenCV3を使う
OpenCVについて
画像処理するライブラリ
2系入れたいならディストリビューションごとにパッケージあるからそっち使いましょう
3系はパッケージが現時点(2016/06/24)でないから自分でビルドする
3.1.0しか検証してないけど多分ほかでも問題ないはず
Windowsは某所でwhl配布されてるからそれを使うと楽
ダウンロード
Sourceforgeからソースを落とせみたいな記事がたくさんあるけど罠です
makeでコケるのでGithubからcloneすると良いです
1$ cd ~
2$ git clone https://github.com/Itseez/opencv.git
3$ cd opencv
4$ git tag
5タグ一覧が出るから使いたいバージョンを探す
6$ git checkout 3.1.0
7ダメだったらcloneしたやつそのまま使えばいけるかもね(今回の記事ではcloneしたのをそのまま使用)
2016年11月24日 追記
バニラな環境でやったらハマったのでメモ
1-D PYTHON_EXECUTABLE=$(which python)
$(which python)
は単にパス探してるだけなので
バニラだとpythonじゃなくてpython3で探さないとダメだった
ビルド
1$ pwd
2/home/hoge/opencv
3$ mkdir build
4$ cd build
5$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D WITH_FFMPEG=OFF -D BUILD_opencv_python2=ON -D BUILD_opencv_python3=ON -D PYTHON_EXECUTABLE=$(which python) ..
6ログの途中にちゃんとPythonが対象に含まれてるか確認しておく
7これはpyenvでの結果だけどノーマルのPythonでもこんな感じで含まれてるはず
8-- Python 2:
9-- Interpreter: /usr/local/pyenv/shims/python (ver 3.5.1)
10-- Libraries: /usr/lib/x86_64-linux-gnu/libpython3.5m.so (ver 3.5.1+)
11-- numpy: /usr/local/pyenv/versions/3.5.1/lib/python3.5/site-packages/numpy/core/include (ver 1.10.4)
12-- packages path: lib/python3.5/site-packages
13--
14-- Python 3:
15-- Interpreter: /usr/local/pyenv/shims/python3 (ver 3.5.1)
16-- Libraries: /usr/lib/x86_64-linux-gnu/libpython3.5m.so (ver 3.5.1+)
17-- numpy: /usr/local/pyenv/versions/3.5.1/lib/python3.5/site-packages/numpy/core/include (ver 1.10.4)
18-- packages path: lib/python3.5/site-packages
19--
20-- Python (for build): /usr/local/pyenv/shims/python
21$ make
コケないことを祈ろう
make InstallはOpenCVそのものが使いたい場合いるけどPythonで使うなら要らない
ライブラリの追加
Python用のパスを通す
1$ find . -name "*.so"
2./lib/libopencv_features2d.so
3./lib/libopencv_cudafilters.so
4./lib/libopencv_imgcodecs.so
5./lib/libopencv_cudacodec.so
6./lib/libopencv_videoio.so
7./lib/libopencv_cudabgsegm.so
8./lib/cv2.cpython-35m-x86_64-linux-gnu.so ←これ
9./lib/libopencv_cudaobjdetect.so
10./lib/libopencv_objdetect.so
11./lib/libopencv_imgproc.so
12./lib/libopencv_core.so
13./lib/libopencv_shape.so
14./lib/libopencv_flann.so
15./lib/libopencv_cudafeatures2d.so
16./lib/libopencv_cudastereo.so
17./lib/libopencv_cudalegacy.so
18./lib/libopencv_cudaimgproc.so
19./lib/libopencv_photo.so
20./lib/libopencv_cudev.so
21./lib/libopencv_video.so
22./lib/libopencv_ml.so
23./lib/libopencv_stitching.so
24./lib/libopencv_cudawarping.so
25./lib/libopencv_videostab.so
26./lib/libopencv_cudaarithm.so
27./lib/libopencv_highgui.so
28./lib/libopencv_superres.so
29./lib/python3/cv2.cpython-35m-x86_64-linux-gnu.so ←これ
30./lib/libopencv_cudaoptflow.so
31./lib/libopencv_calib3d.so
32必要な方を適宜モジュールのパスが通ったところへコピーする
おわり