またしても環境構築にハマりまくったけど、無事にOpenPose動きました。
サンプルを動かしただけですが、いちおうソースコードからビルドまでやりました。
こちらのサイトが大変参考になりました。
動いてよかった。。
R200はセグメンテーション機能が使えないので、depthを使って自分で実装することにしました。
自力でセグメンテーション
ざっくりですが、こんな感じになりました。
エッジ部分があらい、ブロブの内部も除去されてる、遅い。このあたりを改善したいです。
座標変換
カラー画像とDepth画像はカメラの位置がずれてるので、併せて使う場合は座標変換をする必要があります。今回はDepth画像の座標系をカラー画像に変換しました。
座標変換用のクラス「PXCProjection」を使います。
使い方は、こちらのサイトが参考になりました。
あと、RSDKのサンプルにある「Projection」も参考になります。
HOTHOT2017
小田原から大手町まで走る大会に参加しました。
4月の上旬にふくらはぎを痛めたため、4月まつに15キロくらい走った以外はまったく練習せず、ぶっつけ本番で初ウルトラでした。
制限時間が緩かったので、完走できればいいや、という思いでしたが、それが功を奏して、無事にゴールまで完踏できました(がんばりすぎるとへばっちゃうからね)。
途中はほとんど歩きながらマストドンしてるだけの区間もあったけど、マストドンなかったら走るのやめてたようなような気もします。二コってくれてた人、ありがと。
数字の記録
走行距離:87km
走行時間:13時間46分48秒
体重:+0.3kg (翌日調べ)
体脂肪率:-3.5% (翌日調べ)
TOOT:36
R200で使える機能を動かしてみたよ。
RSSDKのサンプルコードとドキュメント見ながら実装してみました。
Face
ちゃんと認識してくれていますね。
詰まったのは、「PXCFaceConfiguration::SetTrackingMode()」がエラーになること。「FACE_MODE_COLOR_PLUS_DEPTH」か「FACE_MODE_COLOR」が設定できるはずなんだけど、どちらを指定してもエラーになる。結局スキップしてるんですが、設定しなくても認識してくれています。
長男のハルキチに協力してもらいました。
PersonTracking
こちらもばっちりでした。
ただ、残念ながら「QuerySkeletonJoints()」で取得できると思っていた関節位置は、joints num =0となってしまい、R200では取れないようでした。
関節位置は欲しいので、今後OpenPoseを使ってみようと思います。
Blob
これは妻(顔出しNG)に手を広げもらっている様子です。
まぁ輪郭は取れているんですが、RSSDKのサンプルと比べると、いまいち精度が悪い。パラメータの調整が必要なのかもしれません。
3つの機能を動かしてみましたが、いずれの機能もAPIの呼び方はほぼ一緒なので、すぐに実装できます。「ほぼ」ってところが、若干残念で、「そこ関数名合わせようよ!」みたいのもありましたが。
次は背景の除去です。
どうしようかな~~
次は手指、、、
参考書に沿ってR200の機能確認を進める予定でした。
次は手・指の予定でした。
ある程度予想はしていたのですが、フロントカメラで動作する機能がR200では使えないものが多くあるようです。手・指の検出機能も、PXCSenseManager::EnableHand()のあとにPXCSenseManager::Init()を実行するとエラーが発生してしまいます。
全部試してみる
なら、どの機能が使えるのか、EnableXxx()を全部実行してみました。
結果はこちら。
さて、
ということで、参考書に沿って進める計画は頓挫。
元々の目的に立ち戻って考えると、顔認識(Face)と人物認識(PersonTracking)あたりを深堀りしていくのが良さそう。
顔・体・手を認識する、背景を除去した動画像を作る、これをさっさとやる。
ようやく開発環境が整ったので、R200でどんなことが出来るか試していきます。
当面は参考書のサンプルコードを順次試してみます。
今日はChapter 4-1~4-4で、カラー画像、Depth画像、IR画像の取得と、画像フォーマット一覧の取得です。