カメラの画像から写っている人数を推論し、その結果をLametric TIMEに表示してみた

カメラ画像から人数推論→結果をLametric TIMEに表示を5分で作ってみました！
![image.png](https://qiita-image-store.s3.amazonaws.com/0/247209/bde7c410-5771-b22d-c157-b25aeebf17f9.png)

#準備するものと今回試した環境
・ノートPC
　-Windows 10 バージョン1803
　-カメラ搭載パソコン（インカメラのみのPCを使用しました）

・[Gravio](https://www.gravio.com/jp/gpromo/1901-casual-iot)
　-Gravio Studio Version.2.0.2065
　-Gravio Server Version.2.0.2153
　　　※先日（2018年12月4日）バージョンアップしました！

・電光表示機器
　-LaMetric Time
　　　[http://amzn.asia/d/7kSUmNp](http://amzn.asia/d/7kSUmNp)

#Gravioの設定
Gravioのインストール方法はこちらを御覧ください！
[Gravioのインストール方法](https://qiita.com/mikawan/items/56aaecc05db56723523a)

##STEP1　センサーの設定
カメラの画像を認識して数値化する、ソフトウェアセンサーを設定します。
###１．エリア・レイヤーを登録する
画面右上の”＋”ボタンをクリックし、エリアを作成します。
エリアを作成すると自動的にレイヤーが作成され、SENSING DEVICE TYPEに"BuildAndUSBCamera"を選択します。
###２．レイヤーにデバイスを登録する
一番右のデバイスウィンドウの”⊕”ボタンを選択し、デバイスを追加します。
###３．デバイスの設定
デバイスをダブルクリックし、カメラからのデータ収集について設定します。
今回は、電光表示するLaMetric Timeが通知を受けて表示が終わるまでおおよそ７秒かかるので、カメラの画像収集間隔を10秒で設定します。
画像推論モデルは、”NumberOfPeople-Lite”を設定します。

|項目|設定値|
|:---|:---|
|キャプチャー形式|Picture|
|キャプチャー間隔|10|
|画像推論の実行|NumberOfPeople-Lite|
|画像の保存|チェックなし|
|検出フレームの描画|チェックなし|
![image.png](https://qiita-image-store.s3.amazonaws.com/0/247209/10ef4bed-618a-fd41-31ee-7a9ef90dcf54.png)


##STEP2　動作の設定
表示する動作を設定します。
###１．動作（アクション）の作成
サーバ管理画面より、アクションボタンをクリックし、アクション管理画面を表示します。
アクション管理画面の右上の”＋”をクリックし新しいアクションカードを作成します。
作成したアクションカードをダブルクリックし、アクションを設定します。
###２．アイコン（コンポーネント）を並べて設定する
今回は、"HTTPPost"コンポーネントを使用します。
追加したコンポーネントのプロパティに以下を設定します。

|項目|設定値|
|:---|:---|
|URL|http://[IPアドレス]:8080/api/v2/device/notifications|
|HTTP METHOD|POST|
|Content-Type|application/json|
|Query String|null|
|Body|"{\"model\":{\"frames\":[{\"text\":\""+av.Data + "名\",\"icon\":\"i23532\"}]}}"|
|Authorization Type|Basic|
|Authorization Value|Base64でエンコードした鍵|

■■【2/26追記】■■■■■■■■■■■■■■■■
Authorization Valueですが、Gravio Serverのバージョンアップに伴いBase64エンコードが不要になりました。
Gravio Server Version：2.1.2301以降では、以下の設定で動作します。


|項目|設定値|
|:---|:---|
|Authorization Value|dev:[Api key]|
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■


Bodyに設定する、iconですが、こちらは今回はGravioのロゴをアイコンを設定しています。
アイコン例としては、#3061でマリオや#1589でモンスターボールを表示できます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/247209/30127ebc-1dd1-d5d1-9a3f-043e4f387728.png)
また、textの設定では、トリガー実行時のデータを可変数として使用することができます。検知した人数データを使用する場合は、av.Dataを使用します。また、データと定型文を組み合わせる際は、データと定型文を”+”でつなぎます。

LaMetric Timeの設定に必要な情報の取得については、
[LaMetric TIMEにAPIを使ってテキストを表示してみた](https://qiita.com/mikawan/items/a8c5c0f518c3025a8d1c)
を参考にしてください。

###３．動作確認
右上に表示されている”▷”をクリックし、動作を実行します。
実行すると"名"と表示されることを確認します。
（センサーからのデータをもとにしていない動作のため、数字が表示されません）

##STEP3　動作タイミングの設定
1人以上検知した際にメッセージを表示するために必要となる動作タイミング（トリガー）の設定をします。

|項目|設定値|
|:---|:---|
|エリア|設定したカメラのレイヤー|
|レイヤー|設定したカメラのレイヤー|
|アクション名|作成したアクションカード|
|Interval|10|
|Classic/Threshold Trigger|Classic Trigger|
|NumberOfPeople-Lite|>=1|
![image.png](https://qiita-image-store.s3.amazonaws.com/0/247209/0fcf60e3-aae9-d989-2aab-95252c7a064a.png)

トリガーを有効にすると、人数がLaMetricTimeに表示されます！

#動作画像
動作している様子を撮影してみました！
https://youtu.be/e9Y151GGj9I
[![電光表示](http://img.youtube.com/vi/e9Y151GGj9I/0.jpg)](http://www.youtube.com/watch?v=e9Y151GGj9I)


#あとがき
HTTPが使えるので、APIを使用して様々な連携が簡単にできます！
これから、コンポーネント化される動作も増えていくので、乞うご期待ください！

#参考
[Gravioとは？](https://www.gravio.com/jp-blog-article/2018-11-02-about-gravio)


[温度センサーのデータをエクセルで簡単に表示]
(https://qiita.com/mikawan/items/3d93543566680afda868)

[Slackとボタンスイッチセンサーで「呼び出しシステム」を作ってみた！](https://qiita.com/mikawan/items/ac196bbb5506a3251c55)

[温度データSlack投稿システムを「５分」で作ってみた！](https://qiita.com/mikawan/items/8184cdcc64642aa3729e)

[LaMetric TIMEにAPIを使ってテキストを表示してみた](https://qiita.com/mikawan/items/a8c5c0f518c3025a8d1c)