1. 程式人生 > 實用技巧 >Linux人臉識別登入認證

Linux人臉識別登入認證

本人主機使用系統為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:此方法可能帶來其他潛在隱藏問題