conta's diary

思ったこと、やったことを書いてます。 twitter: @conta_

macでOpenCV2.3.1+Python

OpenCVをPythonで使いたい!!ってことで入れてみました。

事前準備

前OpenCVは入れていたので、いろいろ省略。

ビルド

いつもはcmake-guiを使うんだけど、PythonのPATHの設定方法がいまいちわからなかったので、コマンド実行しました。
*ここを参考にさせて頂きました
http://rest-term.com/technote/index.php/OpenCV%20-%202.x

cmake

こんな感じになりました。

$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/opencv -D BUILD_NEW_PYTHON_SUPPORT=ON -D PYTHON_EXECUTABLE=/usr/local/bin/python -D PYTHON_LIBRARY=/usr/local/Cellar/python/2.7.2/lib/libpython2.7.dylib -D PYTHON_INCLUDE_PATH=/usr/local/Cellar/python/2.7.2/include/python2.7/ .
-- Extracting svn version, please wait...
-- SVNVERSION: exported
-- Detected version of GNU GCC: 42 (402)
-- checking for module 'libdc1394-2'
--   package 'libdc1394-2' not found
-- checking for module 'libdc1394'
--   package 'libdc1394' not found
-- Found PythonLibs: /usr/local/Cellar/python/2.7.2/lib/libpython2.7.dylib
--     Use NumPy headers from: /usr/local/Cellar/python/2.7.2/lib/python2.7/site-packages/numpy/core/include
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: No module named sphinx
CUDA_TOOLKIT_ROOT_DIR not found or specified
-- Could NOT find CUDA (missing:  CUDA_TOOLKIT_ROOT_DIR CUDA_NVCC_EXECUTABLE CUDA_INCLUDE_DIRS CUDA_CUDART_LIBRARY) (Required is at least version "4.0")
-- Parsing 'cvconfig.h.cmake'
--
-- General configuration for opencv 2.3.1 =====================================
--
--     Built as dynamic libs?:     YES
--     Compiler:                   /usr/bin/c++
--     C++ flags (Release):          -Wall -pthread  -O3 -DNDEBUG  -fomit-frame-pointer -msse -msse2 -DNDEBUG
--     C++ flags (Debug):            -Wall -pthread  -g  -O0 -DDEBUG -D_DEBUG -ggdb3
--     Linker flags (Release):     
--     Linker flags (Debug):       
--
--   GUI:
--     Cocoa:                      YES
--
--   Media I/O:
--     ZLib:                       YES
--     JPEG:                       TRUE
--     PNG:                        TRUE
--     TIFF:                       TRUE
--     JPEG 2000:                  TRUE
--     OpenEXR:                    NO
--     OpenNI:                     NO
--     OpenNI PrimeSensor Modules: NO
--     XIMEA:                      NO
--
--   Video I/O:                    QTKit
--
--   Other third-party libraries:
--     Use IPP:                    NO
--     Use TBB:                    YES
--     Use ThreadingFramework:     NO
--     Use Cuda:                   NO
--     Use Eigen:                  NO
--
--   Interfaces:
--     Python:                     YES
--     Python interpreter:         /usr/local/bin/python -B (ver 2.7)
--     Python numpy:               YES
--     Java:                       NO
--
--   Documentation:
--     Sphinx:                     NO
--     PdfLaTeX compiler:          NO
--     Build Documentation:        NO
--
--   Tests and samples:
--     Tests:                      YES
--     Examples:                   YES
--
--   Install path:                 /usr/local/opencv
--
--   cvconfig.h is in:             /Users/ogata/opencv/OpenCV-2.3.1_build
-- -----------------------------------------------------------------
--
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/ogata/opencv/OpenCV-2.3.1_build

よし、PythonのPATHがちゃんと通ったぞっ(^-^)

make & make install

普通にmakeしましょう。
しかしビルド早いなぁー。昔は1時間ぐらいかかってた気がするー

実行してみる

とりあえずimport

$ python
Python 2.7.2 (default, Jan  7 2012, 15:15:33) 
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
Segmentation fault: 11

あれれ?動かない^^;

$ ls /usr/local/opencv/lib/
libopencv_calib3d.2.3.1.dylib     libopencv_flann.dylib             libopencv_ml.2.3.dylib
libopencv_calib3d.2.3.dylib       libopencv_gpu.2.3.1.dylib         libopencv_ml.dylib
libopencv_calib3d.dylib           libopencv_gpu.2.3.dylib           libopencv_objdetect.2.3.1.dylib
libopencv_contrib.2.3.1.dylib     libopencv_gpu.dylib               libopencv_objdetect.2.3.dylib
libopencv_contrib.2.3.dylib       libopencv_highgui.2.3.1.dylib     libopencv_objdetect.dylib
libopencv_contrib.dylib           libopencv_highgui.2.3.dylib       libopencv_ts.2.3.1.dylib
libopencv_core.2.3.1.dylib        libopencv_highgui.dylib           libopencv_ts.2.3.dylib
libopencv_core.2.3.dylib          libopencv_imgproc.2.3.1.dylib     libopencv_ts.dylib
libopencv_core.dylib              libopencv_imgproc.2.3.dylib       libopencv_video.2.3.1.dylib
libopencv_features2d.2.3.1.dylib  libopencv_imgproc.dylib           libopencv_video.2.3.dylib
libopencv_features2d.2.3.dylib    libopencv_legacy.2.3.1.dylib      libopencv_video.dylib
libopencv_features2d.dylib        libopencv_legacy.2.3.dylib        pkgconfig/
libopencv_flann.2.3.1.dylib       libopencv_legacy.dylib            python2.7/
libopencv_flann.2.3.dylib         libopencv_ml.2.3.1.dylib       

うん、Pythonあるぞ?
。。。
あぁ、PATHか。

ということで、PATHを通す

export PYTHONPATH=$PYTHONPATH:/usr/local/opencv/lib/python2.7/site-packages/

動いた(・∀・)

OpenCV同梱のPythonのサンプルを動かしてみる

とりあえず、カメラでも動かしてみよう。

import cv2.cv as cv
import time

cv.NamedWindow("camera", 1)

capture = cv.CaptureFromCAM(0)

while True:
    img = cv.QueryFrame(capture)
    cv.ShowImage("camera", img)
    if cv.WaitKey(10) == 27:
        break

これを実行

python camera.py

なんか画面に顔がー!!誰だー!

あ。自分か(´・ω・`)


ということでおしまい!