Telepathy Jumperアプリを作る OpenCV for Unity #アセットアドカレ

OpenCV for Unity

https://www.assetstore.unity3d.com/jp/#!/content/21088

画像や映像を使って色々なことができる便利ツール集、ライブラリのOpenCVをUnityで利用可能にするプラグインアセットです。

開発環境

  • Unity 5.2.1p2

ざっとこんなことが出来ます。

  • カメラから取得した写真や映像にリアルタイムにフィルタ処理
    →モザイクや漫画調にするなどエフェクトを掛けられる
  • 映っている顔を認識させてリアルタイムに位置を判定
    →笑い男の顔を被せられる
  • カメラから取得した絵に映るマーカーや特徴点を認識
    →ARが作れる。
    →マーカーの位置を起点としたポジトラができる
    →マーカーレスでもOpticalFlowでポジトラが作れるかも?
  • カメラからの動画をリアルタイムに変形、合成のスティッチができる。
    →Thetaでパノラマ合成

>> OpenCVとは? 最新3.0の新機能概要とモジュール構成 – Build
Insider http://www.buildinsider.net/small/opencv/001

また、画像(Texture2D)からオブジェクトの検知のみのが可能な、OpenCV ObjectDetectorがある。

OpenCVの実装サンプルとしては同封のSamplesにデモシーンがあるが、他にもARに特化したMarkerBased AR Sampleや、フェイストラッキングのサンプルのFaceTracker Sampleも用意されている。

 

MarkerBased AR Sample

FaceTracker Sample

 

OpenCV For Unityのサンプルを動かす

まずはOpenCV For UnityアセットのReadMe.pdfやチュートリアル動画を見ながらImport直後にいくつかの設定を行います。
なお今回はUnity5で行っています。

Unity4向けはこちら

  1. OpenCVForUnity/StreamingAssets/ フォルダAssetsフォルダ直下に移動。

  2. Tools/OpenCV for Unity/Set Plugin Import Settings メニューを選択

  3. Build SettingsへSamples以下にあるシーンを全部突っ込む

  4. OpenCVForUnitySampleシーンを開いてUnityエディタ上で実行。いくつかのサンプルはPCのカメラや接続したWebカメラからの画像を使うので接続して試そう。

    試せるサンプル一覧

余談。Unityの必修スキルを一つ紹介
▶をAltキーを押しながら展開すると、子のフォルダも一気に開いてくれて便利。もちろんHierarchyなど他のWindowにある折り畳みされた要素すべてに有効。複雑な構造のモデルデータも一気に展開可能。

 

AndroidやiOS、Win、Macなどの各プラットフォーム用の設定

引き続き付属のReadMe.pdfから、OpenCVForUnity/Plugins/ 以下にあるライブラリのファイルなどにInspector上で設定を行う、必要があるかもしれない。見た感じインポート時にすでにデフォルトで設定済みの様子であった。

もし実行時にDLLNotFoundExceptionとエラーが出たらこの設定を確認しよう。

 

カメラの絵が左右反転している

付属のサンプルはPC画面の上にWebカメラを設置することを想定して作られており、VRのように自分が向いている方向にWebカメラを向けると左右が反転して?となります。

 

顔だけじゃなく色々なものを検出したい

StreamingAssets以下にあるhaarcascade_frontalface_alt.xmlというxmlファイルは、OpenCVで物体を検出するために利用する特徴点の学習済みのデータファイルなので、こちらを差し替えることにより顔だけじゃなく様々なオブジェクトを検出することができます。

車などoppaiなど、非常に有用そうです。

またメガネやマスクを掛けていても検出できるようにしたりなどの調整も可能のようです。

iOS – 「顔以外」のものを画像認識する by @shu223 on @Qiita
http://qiita.com/shu223/items/ffd2202eaf92d342f83d

学習ファイルも色々大変ではありそうですがもちろん自分で学習させて作れるそうで、そのうち「名前は知っているけど見たことがない物」について、キーワードをGoogle画像検索に投げ、拾ってきた画像から学習ファイルを作り、Telepathy Jumperで目の前のものがその「名前を知っているけど見たことがない物」なのかどうかを判断ができる未来がありそうです。誤検出を楽しむおもちゃにならないことを願うのみですが。

 

Unity Assets Advent Calendar 2015 記事一覧へ