Python で OpenCV

PEPSI ICE CUCUMBER

前回 c のサンプルが動いて楽しかった OpenCV。一緒に Python のサンプルも付いてるからそっちも動かしてみようと思ったのだけど…

debian:~/myTest/opencv-1.0.0/samples/python paraches$ python lkdemo.py
OpenCV Python version of lkdemo
Traceback (most recent call last):
  File "lkdemo.py", line 8, in ?
    from opencv import cv
ImportError: No module named opencv
debian:~/myTest/opencv-1.0.0/samples/python paraches$ 

へ? opencvってモジュールが無いって? OpenCV インストールして一緒にインストールされたサンプルなのに…。なんでだろう?っていうか Python の事なにも知らないんだよな…。触った事ないし。
で、Python ちょっと調べてみた。モジュールの置き場所ってのがあるのね。後は PYTHONPATH で設定することもできるのね。

debian:~/myTest/opencv-1.0.0/samples/python paraches$ python
Python 2.3.5 (#1, Jan 13 2006, 20:13:11) 
[GCC 4.0.1 (Apple Computer, Inc. build 5250)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python23.zip', '/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3', '/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/plat-darwin', '/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/plat-mac', '/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/plat-mac/lib-scriptpackages', '/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/lib-tk', '/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/lib-dynload', '/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/site-packages', '/System/Library/Frameworks/Python.framework/Versions/2.3/Extras/lib/python']
>>> 

んじゃ次は opencv のモジュールだけど、どこにあるの…?
インストールしたときに /opt/local/lib とか設定したから /opt/local/lib にある???

debian:~/myTest/opencv-1.0.0/samples/python paraches$ ls /opt/local/lib
apr.exp                         libogg.la
aprutil.exp                     libpanel.5.dylib
<省略>
libogg.dylib                    terminfo
debian:~/myTest/opencv-1.0.0/samples/python paraches$ 

無いし…。
OpenCV の INSTALL 見てもわからんな〜。./configure --help に何かないかな?

Installation directories:
  --prefix=PREFIX         install architecture-independent files in PREFIX
			  [/usr/local]
  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
			  [PREFIX]

ん〜これかな? /usr/local に入ってる?

debian:~/myTest/opencv-1.0.0/samples/python paraches$ ls /usr/local/lib
libcv.1.0.0.dylib       libcvhaartraining.a     libhighgui.la
libcv.1.dylib           libcxcore.1.0.0.dylib   libml.1.0.0.dylib
libcv.dylib             libcxcore.1.dylib       libml.1.dylib
libcv.la                libcxcore.dylib         libml.dylib
libcvaux.1.0.0.dylib    libcxcore.la            libml.la
libcvaux.1.dylib        libhighgui.1.0.0.dylib  pkgconfig
libcvaux.dylib          libhighgui.1.dylib      python2.3
libcvaux.la             libhighgui.dylib
debian:~/myTest/opencv-1.0.0/samples/python paraches$ 

を! ここに OpenCV のライブラリがあるのね。で、python2.3 なんてフォルダもあるし!中にモジュールがあるってこと?

debian:~/myTest/opencv-1.0.0/samples/python paraches$ ls /usr/local/lib/python2.3/
site-packages
debian:~/myTest/opencv-1.0.0/samples/python paraches$ ls /usr/local/lib/python2.3/site-packages/
opencv
debian:~/myTest/opencv-1.0.0/samples/python paraches$ ls /usr/local/lib/python2.3/site-packages/opencv/
__init__.py             adaptors.py             highgui.pyc
__init__.pyc            adaptors.pyc            highgui.pyo
__init__.pyo            adaptors.pyo            matlab_syntax.py
_cv.la                  cv.py                   matlab_syntax.pyc
_cv.so                  cv.pyc                  matlab_syntax.pyo
_highgui.la             cv.pyo
_highgui.so             highgui.py
debian:~/myTest/opencv-1.0.0/samples/python paraches$ 

なるほど〜そんな感じで入ってるのね。
じゃ、どこをモジュールの場所として指定すれば良いの?さっきの sys.path の真似して /usr/local/lib/python2.3/site-packages で良いのか?

debian:~/myTest/opencv-1.0.0/samples/python paraches$ PYTHONPATH=/usr/local/lib/python2.3/site-packages/
debian:~/myTest/opencv-1.0.0/samples/python paraches$ echo $PYTHONPATH
/usr/local/lib/python2.3/site-packages/
debian:~/myTest/opencv-1.0.0/samples/python paraches$ export PYTHONPATH                                   

で、PYTHONPATH を設定して、サンプルを起動してみる…

debian:~/myTest/opencv-1.0.0/samples/python paraches$ python lkdemo.py
OpenCV Python version of lkdemo
Hot keys: 
        ESC - quit the program
        r - auto-initialize tracking
        c - delete all the points
        n - switch the "night" mode on/off
To add/remove a feature point click it

debian:~/myTest/opencv-1.0.0/samples/python paraches$ 


できた! ちゃんと Python でも動いた〜!

モジュール云々でここまで凄い時間かかった…。Python のモジュールの場所が MacOS X は特別なの? /System/Library の Frameworks の下になってるし。ま、今回はとりあえず動かせたから良しとしよう!