OpenCV Plus Unityでヘッドトラッキング+オブジェクト追従

UnityでOpenCV系の検索するとだいたい有料アセットの「OpenCV for Unity」が引っかかる。

今回は無料アセットのOpenCV Plus Unityを使って顔を認識させて、顔の位置にオブジェクトを配置して追従させる。

 

Unity 2017.4

手順

アセットをインポート

unsafeエラーが出るのでBuild Settings>Player Settings>Other Settings>Allow ‘unsafe’ Codeにチェックをつける。

Assets>OpenCV+Unity>Demo>FaceDetectorSceneシーンを開く

 

初めて実行するとこのメッセージが出てくるけど×で閉じる。

目とか輪郭を追加情報DLしたら表示できるだけなので今回はパス。

邪魔なのでスクリプトから消す

FaceDetectorScene.csから以下をコメント化

 

 

 

WEBカメラが問題なければ普通にひょじされて顔の周りに赤枠がつく。

エラーが出る場合は

FaceRigとかunityCaputureとかwindowsMRのUSBがWEBカメラとして認識したり

カメラ関係が問題あるのでなんとかする。

 

シーン内のCanvas>RawImageのFaceDetectorSceneスクリプトが赤枠つけてる処理なので調べる

ProcessTexture内のprocessor.MarkDetectedが赤枠を付けた情報を返しているので中身を見る

必要なのはココだけ(余計なモノ省いた状態)

この中のface.Regionが顔の位置を持っているので、顔の位置情報とかを返すように修正する

 

あとはもらった情報をワールド座標に変換するためなんか色々調べる。ここが分かりやすかった。↓

【Unity】永久保存版! 座標を変換して狙った位置に表示する方法

 

FaceDetectorSceneスクリプトを修正する。

色々理解できてなくて絶対に全然違うところあるので誰か教えて欲しい・・・

 

CanvasオブジェクトのRenderModeはWorldSpaceにする。

アタッチする情報とかはとりあえず以下を参照

 

赤枠の中心点からズレるのはCanvasカメラとかScreenPointToWorldPointInRectangleあたりが何か間違ってるんだろうけど

わからん・・・

 

とりあえずいったん動くところまで。

 

このページちゃんとした処理が分かるまで検索エンジンに引っかからないようにしておこう・・・。

 

関連記事




コメントを残す

※コメントは承認後に表示されます。
 コメントを公開されたくない場合、名前の後に「:非公開」とつけてください。