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

OpenCV2.0をC++でMac(Leopard)のXcode3.1で使う

やたら長いタイトルですが、ピンポイントでこのあたりの情報が無かったので載せておきます。C++は初めてだけどね。

環境設定

OpenCVで遊ぼう!: MacOSXでOpenCV2.0を使う(Mac Ports)
OpenCVのインストール、Xcodeで扱うにはここの説明を元にします。公式のWikiに書いてあることの訳なんですが、C++で使うので1のテンプレート作成の時にC++のテンプレートを選びます。それ以外は同じ。

C++APIを使う

OpenCV2.0の新しくなったC++APIを使ったコードを載せときます。昔のAPIをそもそも使った事無くて比較は出来ないんですが、とても使いやすいです。#includeするのは "cv.h" と "highgui.h" だけでオーケー。using namespace cv; といれとくととても短く書けます。さらに新しくなったAPIを使う場合、メモリの管理が自動で行われるので、簡単なプログラムならなにも気にしなくていいのから超楽です。Processingみたいです。

サンプルコード

普通に画像を表示するコードが無かったのでざっくり作ってみた。プロジェクトのディレクトリにimageディレクトリを作って適当に手持ちのjpgを放り込んで実行するとぽんと表示されるはず。

#include "cv.h"
#include "highgui.h"

using namespace cv;

int main (int argc, char** argv) {
	Mat image = imread("../../image/test.jpg", 1);
	
	namedWindow("hello", 1);
	imshow("hello", image);
	
	waitKey(10000);
	
	return 0;
}

カメラを使えるかもチェック

画像とビデオの読み込みと書き込み — opencv v2.1 documentation
公式リファレンスのサンプルコードを持って来てそのままコピペして動かします。Macbookでは普通に動きました。
http://gyazo.com/f17c1bd780eb2881f5403ead94aa9908.png
こんな感じです。Ωです。エッジ検出するコードなんですね。

ちょっと教えて欲しいこと

OpenCVは公式にPythonから使えるとなってるのだけど、macportsで2.0.0を入れる限りではPythonのモジュールが入らなくて動かせないんですが、この問題解決出来た人いませんか?そもそもモジュール入った人いますか?