Howdy
Howdy は Linux 上で Windows Hello と同じことを実現するプログラムです。コンピュータの赤外線センサーとカメラを使ってユーザーの顔を認識します。
目次
インストール
設定
必要に応じて Howdy を起動する
Howdy でユーザーを認証するには、Howdy を使用したい PAM の設定ファイルに修正を加える必要があります。設定ファイルに以下の行を追加してください:
auth sufficient pam_python.so /lib/security/howdy/pam.py
例
/etc/pam.d/sudo
# PAM-1.0 auth sufficient pam_python.so /lib/security/howdy/pam.py auth include system-auth account include system-auth session include system-auth
赤外線センサーの追加
使用したい赤外線センサーと対応する /dev/videoX
ファイルを確認してください。cheese や fswebcamAUR などのプログラムで確認できます。ファイル名が確認できたら /lib/security/howdy/config.ini
をテキストエディタを使って手動で編集するか sudo howdy config
を実行してください。
Howdy に顔を追加
Howdy に顔モデルを追加するには sudo howdy add
を実行してください。
トラブルシューティング
赤外線カメラのテスト
まず最初に赤外線カメラが機能するかどうか試してみると良いでしょう。以下のコマンドを使って gstreamer パッケージを使って10枚 jpg 写真を撮影することができます (/dev/video0 はあなたの使用する赤外線カメラのデバイスに置き換えてください):
gst-launch-1.0 v4l2src device=/dev/video0 num-buffers=10 ! image/jpeg ! multifilesink location="frame-%02d.jpg"
Howdy が機能しない
root で howdy test
を実行することで Howdy が正しく機能するかどうか確認できます。機能している場合、PAM の設定ファイルを確認してください。SDDM など一部のプログラムは PAM で正しく機能せず、問題が発生することがあります [1]。
入力デバイスの認識エラー
一部の赤外線センサー (例: ThinkPad T480 のセンサー) は設定ファイルにフレームの高さと幅を設定する必要があります:
frame_width = 400 frame_height = 400
センサーの幅と高さの出力: v4l2-ctl --list-devices --all
。
GStreamer がシェルに警告を吐く
howdy を動かしたときに以下のようにシェルに警告が表示される場合:
# howdy test
[ WARN:0] global /build/opencv/src/opencv-4.1.1/modules/videoio/src/cap_gstreamer.cpp (1756) handleMessage OpenCV | GStreamer warning: Embedded video playback halted; module source reported: Could not read from resource. [ WARN:0] global /build/opencv/src/opencv-4.1.1/modules/videoio/src/cap_gstreamer.cpp (886) open OpenCV | GStreamer warning: unable to start pipeline [ WARN:0] global /build/opencv/src/opencv-4.1.1/modules/videoio/src/cap_gstreamer.cpp (480) isPipelinePlaying OpenCV | GStreamer warning: GStreamer: pipeline have not been created ...
上流の opencv パッケージをビルドするときに警告レベルがデフォルトで LOG_LEVEL_WARNING = 3
になっていることが原因です。C++ の cv::utils::logging API はログレベルを高く設定して警告を非表示にできますが、この API はまだ python-cv2 からは使えません。
一時的な解決策としては OPENCV_LOG_LEVEL=ERROR
環境変数を追加することで警告を消すことができます。