HVC-P2の安定化ライブラリのコンパイル方法
HVC-P2について
簡単に言うとオムロンから販売されているカメラコンポーネントで、取り付けるだけで、人の顔を計測して年齢・性別・感情などを自動で取得できるようになるセンサーです。
※参照元:Sensing Egg Project オムロン×IoT-人理解画像センサ(HVC)
基盤むき出しで販売されているため、カメラとして外観を含んだパッケージではありませんが、様々な機器に取り付けれて、人の属性データが自動で取得できるのは魅力的です。マーケティングにかなり活かせるのではないでしょうか?
動作にはPCが必要で、現在公式でサポートしているのはwindowsOSのみとなります。
早くLinuxに対応してほしいところです。
このHVC-P2は公式からSDKが配布されており、サンプルコードを起動すればすぐに使えるのですがトラッキングで重要になってくる個体の特定が実装されていません。
安定化ライブラリについて
そこで重要になってくるのが安定化ライブラリ。
こちらもオムロンの公式ページからリリースされています。
下記URLのサンプルコードよりDLできます。
Human Vision Components(HVC-P2) B5T-007001 | OMRON's Image Sensing Site: +SENSING
この安定化ライブラリを組み込むと下記のログを得ることができます。
- 年齢、性別などの情報が安定化される
- 個体を検知できる
したらば、実装すべきですがダウンロードしたファイルに含まれているドキュメントを見ると...
これしか書かれていない。
Cに慣れている人であればいいのかもしれませんが、素人には鬼畜すぎます。
実際かなり複雑でした。
ですので、ライブラリをコンパイルする手順を下記に記しときます。
コンパイル方法について
ダウンロードしたサンプルフォルダを開くと下記の通り2つに分かれています。
SampleCode
STBLib
このディレクトリをルートとして解説していきます。
手順1. ライブラリのコンパイル
VisualStudio(以下VS)で下記のファイルを開きます。
/STBLib/lib/platform/Windows/vc14/STB.sln
VSが立ち上がったら、何もせずにソリューションエクスプローラーからビルド(F7)します。
すると「/STBLib/lib/bin/Windows/vc14/Debug」にライブラリファイルが生成されます。
このうち使用するファイルはSTB.dllとSTB.libになります。
手順2. STB.libをインポートディレクトリへ移動
先ほど生成した「/STBLib/lib/bin/Windows/vc14/Debug/STB.lib」をサンプルコード本体の「/STBLib/SampleCode/import/lib/」ディレクトリにコピーします。
「ここにSTB.libをコピーしてください」って言う空ファイルがあると思います。
そのディレクトリです。
手順3. STBヘッダーファイルをインポートディレクトリへ移動
先ほどと同じ手順で今度は「/STBLib/lib/src/usr_include/」にある3つのファイル
STBAPI.h
STBCommonDef.h
STBTypedef.h
を「/STBLib/SampleCode/import/include/」にコピーします。
「ここにSTBヘッダーファイルをコピーして下さい」の空ファイルが同じくあります。
手順4. SampleCodeをコンパイル
ようやく本体のサンプルコードをコンパイルできます。
VSで「/STBLib/SampleCode/platform/vc14/sample.sln」を開き、F7でコンパイルします。
すると「/STBLib/SampleCode/bin/vc14/Debug/」に実行ファイル群が生成されます。
手順5. STB.dllファイルを実行フォルダに移動
手順4で生成された実行ファイルを、シェルからexecしてもSTB.dllが無いとエラーになるので、手順1で生成したSTB.dllをこのディレクトリにコピーします。
「/STBLib/lib/bin/Windows/vc14/Debug/STB.dll」
↓にコピー
「/STBLib/SampleCode/bin/vc14/Debug/STB.dll」
手順6. コマンドプロンプトから実行
接続されたCOMポートを確認して、COMポートとボーレートを指定して実行します。
sample.exe 3 9600
するとこんな感じでログが取れます。
ライブラリが正常に組み込まれていると(-)(※)が標準のログに付与されます。
これはどうやら安定化してるかしてないかのフラグを表しているようで、(-)が安定化の最中で、(※)が安定化済みのパラメーターになります。
今まで検出したフレーム(ログ)ごとにAgeやGenderのパラメーターが変動するのに対して、安定化が完了したらAgeやGenderのパラメーターが固定化されます。
サンプルコードで出力される標準のログではユーザー個体のトラッキングIDは出力されてませんが
pSTBFaceResult[i].nTrackingID;
でトラッキングIDを取得することができます。
以上P2の安定化ライブラリのコンパイル方法でした。