Howdy

提供: ArchWiki
2021年7月25日 (日) 18:15時点におけるKusanaginoturugi (トーク | 投稿記録)による版 (→‎トラブルシューティング: === IR emitter does not work === を追加(英語版より))
ナビゲーションに移動 検索に移動

Howdy は Linux 上で Windows Hello と同じことを実現するプログラムです。コンピュータの赤外線センサーとカメラを使ってユーザーの顔を認識します。

インストール

howdyAUR パッケージをインストールしてください。

設定

必要に応じて 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 ファイルを確認してください。cheesefswebcamAUR などのプログラムで確認できます。ファイル名が確認できたら /lib/security/howdy/config.ini をテキストエディタを使って手動で編集するか sudo howdy config を実行してください。

ノート: sudo howdy config を実行するには gedit のインストールが必要です。

Howdy に顔を追加

Howdy に顔モデルを追加するには sudo howdy add を実行してください。

トラブルシューティング

IR emitter does not work

If the IR camera is on and the IR emitter does not work, one possible situation is that you chose the wrong file. For example, /dev/video0 and /dev/video2 both work fine to recognize your face, but only /dev/video2 will turn on the IR emitter. So make sure you have checked all /dev/videoX.

Otherwise you should follow the instructions from linux-enable-ir-emitter to enable the IR emitter.

赤外線カメラのテスト

まず最初に赤外線カメラが機能するかどうか試してみると良いでしょう。以下のコマンドを使って 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 環境変数を追加することで警告を消すことができます。

ノート: 上記の環境変数で警告は消えますが他の問題も隠してしまう可能性があります。