読者です 読者をやめる 読者になる 読者になる

とか、など

プログラミングとか、画像処理とか、機械学習を勉強しようとして挫折中

macのpython3 opencv3 でcontrib(siftとかsurf)パッケージのインストール

macのpython3 opencv3環境でcontribパッケージを導入できたのでメモ

contribとはSIFTとかSURFとか研究では割と使うけど、特許の関係とか色々あるものを

分割した機能が入っているパッケージです。

anaconda環境に入れたけどvirtualenvでも一緒だと思う

とりあえず大変だった...

 

python3にopencvを入れてみる - とか、など

でcontribなしでは入れたけど、contribは入ってないため今回はcmakeでビルドして入れようと思う

 

とりあえずcmakeでビルドするのはここ

Install OpenCV 3 With Python 3 (Mac OSX) - Luis González

anaconda特有の問題(フラグの指定とかdlibの位置とかは)

osx - opencv 3.0.0 alpha with Python 3 failed to import cv2 - Stack Overflow

ここを参考に

 

 

とりあえず、新しく環境を作る

conda create -n py34cv3contrib python=3.4 anaconda

cmakeでビルドするので

GUI版のcmakeを入れておく

Download | CMake

でopencv3は

DOWNLOADS | OpenCV 

zipで落とす

contrib本体は

GitHub - Itseez/opencv_contrib: Repository for OpenCV's extra modules

からクローンするなりzipで落とすなりする。

 

で以下の設定をするわけだが、GUIでやるのを強くお勧めします。

まずsourceにさっき落としたopencvフォルダを

で次にdstをopencvフォルダの下にbuildとか作ってそこを指定

でcontribはさっき落としたcontribのフォルダのパスを

OPENCV_EXTRA_MODULES_PATH=/さっきのcontribpath/modules

を指定。

他の設定を(多分抜けはないと思うのですが...)

CMAKE_INSTALL_PREFIX=/Users/hogehoge/anaconda/envs/py34cv3contrib

PYTHON3_EXECUTABLE=/Users/hogehoge/anaconda/envs/py34cv3contrib/bin/python3

PYTHON3_LIBRARY=/Users/admin/anaconda/envs/py34cv3contrib/lib/libpython3.4m.dylib 

PYTHON3_INCLUDE_DIR=/Users/hogehoge/anaconda/envs/py34cv3contrib/include/python3.4m


PYTHON3_NUMPY_INCLUDE_DIRS=/Users/hogehoge/anaconda/envs/py34cv3contrib/lib/python3.4/site-packages/numpy/core/include


PYTHON3_PACKAGES_PATH=/Users/hogehoge/anaconda/envs/py34cv3contrib/lib/python3.4/site-packages

 

そしたら、generateとconfigureを押して完了したら

ターミナルでbuildフォルダに移動して

make -j4

終わったら

sudo make install

でpy34cv3contribの環境にがバーッとインスコされます。

 

あともう少し

最後に、cv2.soが参照するdylibの位置を教えてあげる必要があります。

自分が怒られたのはこの二つだけでした。

hogehogeは自分のユーザ名に変更してください

 

sudo install_name_tool -change libpython3.4m.dylib /Users/hogehoge/anaconda/envs/py34cv3contrib/lib/libpython3.4m.dylib /Users/hogehoge/anaconda/envs/py34cv3contrib/lib/python3.4/site-packages/cv2.so

 

sudo install_name_tool -change lib/libopencv_hdf.3.1.dylib /Users/hogehoge/anaconda/envs/py34cv3contrib/lib/libopencv_hdf.3.1.dylib /Users/hogehoge/anaconda/envs/py34cv3contrib/lib/python3.4/site-packages/cv2.so
done

 

これで、完了。お疲れさまです。

試しに、lennaさんを落としてきて、下のを実行してみてください。

 

import cv2
import numpy as np
from matplotlib import pyplot as plt

imgOrg = cv2.imread( './lenna.png' )
imgGray = cv2.cvtColor( imgOrg, cv2.COLOR_BGR2GRAY )
sift = cv2.xfeatures2d.SIFT_create( nfeatures = 0, nOctaveLayers = 3, contrastThreshold = 0.04, edgeThreshold = 10, sigma = 1.6 )
keypoints, descriptors = sift.detectAndCompute( imgGray, None )
imgDst = np.empty_like( imgOrg )
cv2.drawKeypoints( imgOrg, keypoints, imgDst, -1, flags = cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS )

cv2.imshow( 'hoge', imgDst )
cv2.waitKey( 0 )
cv2.destroyAllWindows()

 

こんな感じで特徴点が表示されればOKです。

ついにmac python3, opencv3でSIFTを使えるようになりました!!

誰かcontrib付きpipで入れられるようにしてくんねーかな

 

f:id:hikuIchi:20160223220800p:plain