SDB:面部识别
情况
您拥有内置摄像头(以及可选的红外发射器),并希望基于 howdy 软件包为 openSUSE 使用 Windows Hello™ 风格的面部认证。
流程
使用 YaST 或 Zypper 安装需要以 root 用户身份登录。
添加 RPM 仓库
YaST
- 打开 YaST 控制中心,然后单击软件仓库。
- 单击添加并下一步。
- 输入名称“dmafanasyev”,并根据您的 openSUSE 版本设置仓库 URL(将
[leap_version]替换为 15.4 等)。
openSUSE Leap
https://download.opensuse.org/repositories/home:/dmafanasyev/[leap_version]/
openSUSE Tumbleweed
https://download.opensuse.org/repositories/home:/dmafanasyev/openSUSE_Tumbleweed
Zypper
根据您的 openSUSE 版本在终端中运行
openSUSE Leap
# sudo zypper addrepo --refresh https://download.opensuse.org/repositories/home:/dmafanasyev/[leap_version]/ dmafanasyev
openSUSE Tumbleweed
# sudo zypper addrepo --refresh https://download.opensuse.org/repositories/home:/dmafanasyev/openSUSE_Tumbleweed/ dmafanasyev
使用 OCI 安装 python3-dlib
安装
YaST
- 转到 YaST 控制中心并单击软件管理。
- 查看 > 仓库 > dmafanasyev
- 选择 howdy 软件包
- 按接受
Zypper
在终端中运行
# sudo zypper in howdy
配置
Howdy
以 root 用户身份登录,并使用您喜欢的文本编辑器(例如 mcedit、nano 或 vi)打开文件 /usr/lib64/security/howdy/config.ini。例如,对于 mcedit
# sudo mcedit /usr/lib64/security/howdy/config.ini
设置参数 device_path
device_path = <the path to the device to capture frames from>
对于最简单的情况,这是摄像头的路径(对于您的笔记本电脑,索引 0 可能不同)
device_path = /dev/video0
但最好使用红外发射器,因为它也能在黑暗的地方正常工作。尝试路径中的不同索引以找到合适的值。例如,这可能是索引 2
device_path = /dev/video2
您可以根据配置文件中的注释更改其他参数。例如,设置
detection_notice = true
以打印正在尝试进行面部检测。
最后一步使用命令添加面部模型
# sudo howdy add
或者,如果您使用 kde plasma
# kdesu howdy add
为了提高面部识别的准确性,添加大约 3-5 个模型是一个好主意。
PAM
现在您需要告诉可插拔身份验证模块 (PAM) 系统使用面部身份验证。目录 /etc/pam.d/ 和 /usr/etc/pam.d/ 包含不同系统服务的身份验证配置文件。最有趣的是
/etc/pam.d/common-auth- 通过 SDDM(系统启动后在桌面环境启动之前显示的登录屏幕)通过图形用户界面登录的配置
以 root 用户身份登录,使用您喜欢的文本编辑器(例如 mcedit、nano 或 vi)打开感兴趣的服务配置文件,并在第一行插入以下字符串
auth sufficient pam_python3.so /usr/lib64/security/howdy/pam.py
同时编辑文件 /usr/lib64/security/howdy/pam.py,将
import ConfigParser 替换为 import configparser
和
config = ConfigParser.ConfigParser 替换为 config = configparser.ConfigParser
您可以运行以下命令来执行此操作:
sed -i 's|import ConfigParser|import configparser|g' /usr/lib64/security/howdy/pam.py
sed -i 's|config = ConfigParser.ConfigParser|config = configparser.ConfigParser|g' /usr/lib64/security/howdy/pam.py
已知问题
- 在某些情况下,howdy 无法识别您的面部。如果这在屏幕解锁或终端模式登录期间发生,您可以尝试再次操作。但在 SDDM 中,只有一次尝试有效,而下次什么也不会发生。作为解决方法,您可以输入“Ctrl + Alt + Backspace”来重新启动图形界面并再次尝试。
- 每次系统更新后,位于
/usr/etc/pam.d的身份验证配置文件中的修改都会被重置。因此,您需要在每次软件包更新后重新配置系统服务以使用 Howdy(请参阅 PAM 部分)。