Macでopencv

Macopencvを使えるようにするまでのいろいろを備忘録代わりに。

正しいかどうかはあんまり自信ないので。

 

環境:

MacOS 10.7 (Lion)

Macports (2.1.2)

python (2.7.3), Numpy (1.6.2) < Macportsでinstall

 

Macportsopencvをinstall。pythonからopencvを使うためにはNumpyがinstallされてる必要がある。今回はすでに入っているのでパス。ターミナルから

 

>sudo port -d install opencv +python27

 

python2.7で使うためには+python27のoptionが必要。ちなみにこれでinstallされたopencvMacportsでinstallしたpythonでは使えるけどこのままではOS付属のpythonにはimportできないぽい。

今回installされたのはopencv2.4.2(現時点で最新のは2.4.3)。

 

次にXcodeopencvを使ってみる。

当初、Xcode4.5を使ってテストしてたんだけど、なぜかサンプルコードのビルドに失敗してしまった。結局、Xcode4.2をDeveloper siteから落としてきて入れ直したらビルドできたんだけど原因は不明。

 

New project > Command Line Tool > 適当に名前を付けてTypeをC++

 

Build settingのvalid architecturesからi386を消してx86_64のみに。header search pathに/opt/local/includeを入力。

次にBuild phasesのLink binary with libraryの追加ボタンを押してAdd otherからlibopencvを検索してlibopencv_core2.4.2.dylib, libopencv_highgui.dylib, libopencv_imgproc.dylibを追加。

そしてmain.cppに

 

#include <iostream>
#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;

int main() {
    VideoCapture capture(0);
    Mat frame;


    while (waitKey(1) != 'q') {
        capture >> frame;
        imshow("test", frame);
    }   
    return 0;
}

 

これでビルドするとiSightのカメラが起動する。qで停止。

 

次、python。エディタでtest.pyに以下のように記述。

 

import cv2

cap = cv2.VideoCapture(0)

while cv2.waitKey(1) != 'q':

    success, img = cap.read()

    cv2.imshow("test", img)

 

これをターミナル上で

 

>python2.7 test.py

 

Macportspythonを使えるように事前に/opt/local/binにパスを通しておくこと。)

これでiSightのカメラ起動したけど、qで停止しない。原因はまだ不明。