ラズベリーパイで顔認識(改-3)


ラズベリーパイで顔認識(改-2)ではストリーミングにMjpg-Streamer+Bullseye +CSIカメラモジュールの組み合わせでした。

OSにTrixieを使う場合はどうでしょう。

(改-2)でBullseyeを使っていたのはneuralassemblyのMjpg-StreamerだとTrixieでエラーが出るからでしたが、jacksonliamのMjpg-StreamerならTrixieでもエラーになりません。

このやり方の場合、カメラはCSIカメラモジュールではなくUSBカメラを使うことになります。

こんな感じです。

 

 

 

 

 

 

 

 

Trixie Lite(32-bit)ではIPアドレスを固定する方法も従来とは異なりNetwork Managerを使うようになっています。

やってみましょう。


ストリーミング側

普通にRaspberry Pi Imager の最新版でRaspberr Pi OS Lite (32-bit)  Trixie をMicro SD に焼きます。

ここでユーザー名とパスワード、SSIDとパスワード、SSHを設定しておきます。

ZeroにMicroSDをセットして起動。

設定しておいたユーザー名とパスワードでログインします。

ip a コマンドでIPアドレスを確認してSSHで接続すれば、以降の作業が楽になります。

リポジトリをアップデートしておきます。

 

Lite版の各種設定画面を起動します。
 Interface Optionsで以下を設定
SPI
I2C
Localisation Optionsで以下を設定
Locale
Ja_JP.UTF-8
最後にFinishします。
再起動して日本語環境にしておきましょう。

 

次にIPアドレスを固定します。

以前はdhcpcd.confを編集していましたが、新しいOSではNetwork Managerを使います。dhcpcd.confを編集しても反映されません。

Network Managerを起動

OSを焼く時に最新のImagerではWireless LAN設定になっているので以下のような画面になっています。

「接続の編集」でリターキーを押します。

 

 

 

 

 

 

 

 

 

Wi-Fiアダプターの編集を選択してリターンキー。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

静的IPアドレスを設定するのでタブキーでここをフォーカスします。

 

 

 

 

 

 

 

 

 

 

 

 

リターンキーを押して、自動を手作業に変更します。

 

 

 

 

 

 

 

 

 

 

次に「表示する」にフォーカスしてリターンキーを押します。

 

 

 

 

 

 

 

 

 

 

 

 

編集画面に入ったら、アドレスの「追加」をフォーカスしてリターンキーを押します。

 

 

 

 

 

 

 

 

 

 

 

 

設定画面に入ったら、アドレス・ゲートウェイ・DNSサーバーに入力して、「IPv4アドレス設定が必要になります」にチェックを入れてOKで抜けます。

 

 

 

 

 

 

 

 

 

 

 

 

「戻る」でリターキーをおします。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

最初の画面に戻るので「終了」で設定を終わります。

 

 

 

 

 

 

 

 

 

再起動してアドレスが変わっているのを確認します。

 

ついでにSAMBAも設定しておきましょう。

共有用のディレクトリを作っておきます。

編集

最後尾に以下を追加

[Public]
path = /home/<ユーザー名>/Public
read only = no
guest ok = yes
public = yes
writable = Yes
browsable = yes
force user = <ユーザー名>
directory mode = 0774
create mode = 0774

 

パスワード設定

サービスを起動

確認

以下が表示されれば完了

smbstatus only works as root!

 

Mjpg-Streamerをインストール

パッケージやライブラリをインストール

ユーザールートに戻って jacksonliamのMjpg-streamerをクローンしてビルド。

 

 

Mjpg-Streamer 起動

 

Errorが出ていますが問題ないようです。

 

 

 

 

 

 

 

 

 

 

 

 

ストリームされている画像を外部ブラウザーで見てみます。

http://<IPアドレス>:8080

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

自動起動用のスクリプト

シェルスクリプトコード

 

カメラの傾きはrot (回転) オプションで設定(0 ~ 360)。

 

/etc/rc.localに以下を追加して再起動

systemdで自動起動

ユーザーホームディレクトリに起動用シェルスクリプト作成

以下を記述

 

モード変更

 

サービス名を例えば myservice とします。

/etc/systemd/systemにmyservice.serviceというサービスファイルを作成。

以下を記述

 

サービス開始

 

再起動

 

ステータスを確認する場合

エラーが無ければOK。

 


顔認識側

ストリームされている画像をキャプチャして、顔認識(識別)をやってみます。

基本的な動作は(改-1)でやった単体用のコードを少し変更するだけです。仮想環境を作ってface_recognitionをインストールしておきます。

単体動作の場合のコードはfaceディレクトリにあるfacial_recognition.pyです。

ここではCSIカメラモジュールからの画像を得るのに以下のコードを使っています。

picam2 = Picamera2()

さらに、ここからフレームを切り出すのは以下のコードです。

frame = picam2.capture_array()

変更をかけるのはこの2か所ということになります。

こんな感じです。

オリジナルのコメントは外していますが、改変部分のみStreamingというコメントを入れています。

IPアドレスの部分は各自の環境で書き換えてください。

実行手順は(改-1)と同じです。

source V_face/bin/activate

cd face

python3 facial_recognition.py

 


 

 

Be the first to comment

Leave a Reply

Your email address will not be published.


*