RubyMotionとOpenCVでマンガ風フィルタ

| コメント(0) | トラックバック(0)

MotionCVというOpenCVRubyMotionから使えるようにするラッパーライブラリを細々と開発してます。

現状

ある程度、枠組みはできてあとはOpenCVのAPI郡をどんどんObjective-Cでラップしていけば良い状況なのですが、APIが山ほどあってこりゃ大変だぞと(笑)

そこで、サンプルで実際に動かしながら必要なAPIから少しずつメソッドを追加していってます。上から黙々と単純作業で増やしていくだけだと心が折れる(汗) いつかはやらなきゃいけないのですが...

マンガ風フィルタサンプル

OpenCVで画像変換と言えばマンガ風カメラですからw実装しながら必要なAPIを拡充していきました。

ネットを探せばOpenCVでマンガ風フィルタを実装している例がいくつか見つかりますが、ほとんどがC APIを使っていてMotionCVでラップするのが些か面倒です。

C APIも@watson1978さんが実装方法をコミットしてくれたのでできそうですが...

ビルドには困らなくなったので暫く放置していた「OS XとiOSのためのOpenCV環境構築ガイド」をパラパラめくっていたら最後にアプリを作ってみようという章でマンガ風フィルタがC++ APIで実装されていたのですよ!

OS XとiOSのためのOpenCV環境構築ガイド
酒井 雅裕 加藤 寛人
カットシステム
売り上げランキング: 329,757


ここに載っている例で必要となるAPIをMotionCVに実装して、ロジックをRubyMotionに書き換えたのがこちらです。

cartoonize.rb

実際に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


トラックバック(0)

トラックバックURL: http://www.iwazer.com/mt/mt-tb.cgi/1446

コメントする

このブログ記事について

このページは、iwazerが2013年8月26日 01:23に書いたブログ記事です。

ひとつ前のブログ記事は「RubyMotionのREPLでプログラムで使用していない定数を参照」です。

次のブログ記事は「iOS Simulatorに簡単にたくさんの画像を入れる方法」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。