MotionCVというOpenCVをRubyMotionから使えるようにするラッパーライブラリを細々と開発してます。
現状
ある程度、枠組みはできてあとはOpenCVのAPI郡をどんどんObjective-Cでラップしていけば良い状況なのですが、APIが山ほどあってこりゃ大変だぞと(笑)
そこで、サンプルで実際に動かしながら必要なAPIから少しずつメソッドを追加していってます。上から黙々と単純作業で増やしていくだけだと心が折れる(汗) いつかはやらなきゃいけないのですが...
マンガ風フィルタサンプル
OpenCVで画像変換と言えばマンガ風カメラですからw実装しながら必要なAPIを拡充していきました。
ネットを探せばOpenCVでマンガ風フィルタを実装している例がいくつか見つかりますが、ほとんどがC APIを使っていてMotionCVでラップするのが些か面倒です。
C APIも@watson1978さんが実装方法をコミットしてくれたのでできそうですが...
ビルドには困らなくなったので暫く放置していた「OS XとiOSのためのOpenCV環境構築ガイド」をパラパラめくっていたら最後にアプリを作ってみようという章でマンガ風フィルタがC++ APIで実装されていたのですよ!
カットシステム
売り上げランキング: 329,757
ここに載っている例で必要となるAPIをMotionCVに実装して、ロジックをRubyMotionに書き換えたのがこちらです。
実際にiPhone Simulatorで動かしてみると、こんなふうに変換されます。
お台場のガンダム(Ruby会議帰りw)
→
あさぎり
→
初号機
→
実機でも問題なく動きました。
ビルド方法
最後に、この興味深いwプログラムをビルド&実行する手順を説明しておきます。
まず、サンプルプログラムをcloneしてきます。
$ cd /path/to/work $ git clone https://github.com/iwazer/motioncv-test.git $ cd motioncv-test
vendorの下に私がForkしてあるOpenCVをcloneして、opencv2.frameworkをビルドします。
$ pushd vendor $ git clone https://github.com/iwazer/opencv.git $ cd opencv $ rake build target=all $ popd
buildはi386(Simulator)、arm7、arm7sの3プラットフォーム分行われますのでかなり時間がかかります。
@watson1978さんがビルド用のRake Taskを書いてくれたので随分楽になりました!(・∀・)
あとはRubyMotionでほのぼのrake!
$ rake
コメントする