2021年02月13日
Jetson Nano - その6: 顔認識 + Homebridge-camera-ffmpegでドアモニタもどきの機能にする
前準備ができたので、今回からは「 Jetson Nano - その2
」で行った 顔認識と、前回試した「 Jetson Nano - その5
」の Homebridge-camera-ffmpegを使った合わせ技をやっていきたいと思います。
○期待する機能
以下のような動作になればドアカメラとして良いかと思います。
1) doorcam.pyが顔認識したら、JPEGファイルを保存し、Homebridge-camera-ffmpegに通知。
2) Homebridge-camera-ffmpegがサムネイル付きでiPhone(iPad)に通知。
(サムネイル付きの通知は、かなり処理時間の制約で難しいと このあたり にかいてありました。)
○ストリームの流れ
ストリームの流れは以下のような構成にしています。
本来、RTSPサーバーなんて立ち上げる必要がないと思いますし、無駄にEncoder/Decoderを使用しています。
○使用するプログラム
以下の三つを使用します。
1) rtspサーバー - Jetson Nano - その5 で使用
2) homebridge- Jetson Nano - その5 で使用
3) doorcam.py - Jetson Nano - その2 で使用。
○RTSPサーバー
以下のコマンドで起動して終了です。
○Homebridge
前回と使った config.json にして、以下のコマンドで起動させてください。
今回重要なのは、config.jsonで以下の記述が必要になります。
1) stillImageSourceをdoorcam.pyが保存するJPEGファイル"picture_latest.jpg"に指定しています。
2) motion, switchesをtrueにしているのは外部から通知を受けるようにしています。
あと、iPhoneの設定が必要ですので、 このあたり を読んで設定してください。
○doorcam.py
前回と違って今回は入力ソースがRTSサーバーであったり、JPEGファイルを保存したり、homebridgeに通知したり、と色々やらなければならないので、その辺りの変更をする必要があります。
私のdoorcam.pyを ここ に置いておきますので、必要であれば使ってください。
変更箇所
大きな変更・追加内容は以下になります。"[KM"で検索すればわかるようにコメントしています。
1) os, requests, loggingのモジュールを追加しましたので、インストールしてください。
2) 入力ソースをrtspサーバーに変更。
3) 顔検出した時にhomebridgeに通知するように追加。
また、3秒毎にJPEGファイル (picture_latest.jpg)を保存するように変更。
前のpicture_latest.jpgは履歴としてバックアップするように日時ファイルにリネーム。
4) そうでない時も、2秒毎にpicture_latest.jpgに保存。ただしバックアップしない。
doorcam.pyの起動
以下のコマンドで立ち上げます。
○デモ
こんな感じで、顔検出をするとiPadにサムネイル付きで通知がきているのがわかるかと思います。
○期待する機能
以下のような動作になればドアカメラとして良いかと思います。
1) doorcam.pyが顔認識したら、JPEGファイルを保存し、Homebridge-camera-ffmpegに通知。
2) Homebridge-camera-ffmpegがサムネイル付きでiPhone(iPad)に通知。
(サムネイル付きの通知は、かなり処理時間の制約で難しいと このあたり にかいてありました。)
○ストリームの流れ
ストリームの流れは以下のような構成にしています。
本来、RTSPサーバーなんて立ち上げる必要がないと思いますし、無駄にEncoder/Decoderを使用しています。
○使用するプログラム
以下の三つを使用します。
1) rtspサーバー - Jetson Nano - その5 で使用
2) homebridge- Jetson Nano - その5 で使用
3) doorcam.py - Jetson Nano - その2 で使用。
○RTSPサーバー
以下のコマンドで起動して終了です。
./test-launch "nvarguscamerasrc ! video/x-raw(memory:NVMM), width=1280, height=720, framerate=30/1 ! omxh264enc ! queue ! rtph264pay name=pay0 pt=96"
○Homebridge
前回と使った config.json にして、以下のコマンドで起動させてください。
homebridge
今回重要なのは、config.jsonで以下の記述が必要になります。
1) stillImageSourceをdoorcam.pyが保存するJPEGファイル"picture_latest.jpg"に指定しています。
2) motion, switchesをtrueにしているのは外部から通知を受けるようにしています。
あと、iPhoneの設定が必要ですので、 このあたり を読んで設定してください。
○doorcam.py
前回と違って今回は入力ソースがRTSサーバーであったり、JPEGファイルを保存したり、homebridgeに通知したり、と色々やらなければならないので、その辺りの変更をする必要があります。
私のdoorcam.pyを ここ に置いておきますので、必要であれば使ってください。
変更箇所
大きな変更・追加内容は以下になります。"[KM"で検索すればわかるようにコメントしています。
1) os, requests, loggingのモジュールを追加しましたので、インストールしてください。
sudo pip3 install os
sudo pip3 install requests
sudo pip3 install logging
2) 入力ソースをrtspサーバーに変更。
3) 顔検出した時にhomebridgeに通知するように追加。
また、3秒毎にJPEGファイル (picture_latest.jpg)を保存するように変更。
前のpicture_latest.jpgは履歴としてバックアップするように日時ファイルにリネーム。
4) そうでない時も、2秒毎にpicture_latest.jpgに保存。ただしバックアップしない。
doorcam.pyの起動
以下のコマンドで立ち上げます。
python3 doorcam.py
○デモ
こんな感じで、顔検出をするとiPadにサムネイル付きで通知がきているのがわかるかと思います。
【Jetson Nanoの最新記事】
この記事へのコメント