本人主機使用系統為Manjaro,其他系統未做嘗試
安裝
$ yay -S howdy v4l-utils
具體選項在這里就不多過多介紹,安裝過程最好使用代理,安裝時需要在github下載源碼進行編譯,未使用代理時下載速度感人
配置
在使用sudo時啟用howdy,編輯/etc/pam.d/sudo,添加:
auth sufficient pam_python.so /lib/security/howdy/pam.py
在登錄時使用howdy,編輯/etc/pam.d/system-local-login(GDM或者SDDM),添加:
auth sufficient pam_python.so /lib/security/howdy/pam.py
查看攝像頭設備位置
$ v4l2-ctl --list-devices
編輯howdy配置文件,將 device_path
的路徑修改為設備實際的路徑,比如/etc/video0
:
$ sudo howdy config
為howdy添加面部信息,面朝攝像頭:
$ sudo howdy add
測試
新打開一個終端輸入sudo -s
測試howdy是否可用
問題
在認證成功后會出現類似下面的警告:
[ WARN:0] global /build/opencv/src/opencv-4.4.0/modules/videoio/src/cap_gstreamer.cpp (1760) handleMessage OpenCV | GStreamer warning: Embedded video playback halted; module source reported: Could not read from resource.
[ WARN:0] global /build/opencv/src/opencv-4.4.0/modules/videoio/src/cap_gstreamer.cpp (888) open OpenCV | GStreamer warning: unable to start pipeline
[ WARN:0] global /build/opencv/src/opencv-4.4.0/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
的環境變量。
解決方法
打開.xprofile
添加:
export OPENCV_LOG_LEVEL=ERROR
注銷重新登錄
PS:此方法可能帶來其他潛在隱藏問題