Linux人臉識別登入認證
阿新 • • 發佈:2020-10-07
本人主機使用系統為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:此方法可能帶來其他潛在隱藏問題