Ubuntu安装人脸识别Howdy-源码安装

项目地址https://gitee.com/fish–big/howdy_zh_-cn

原文地址https://github.com/boltgolt/howdy

📖 前言

Howdy 是一个为 Linux 系统提供类似 Windows Hello™ 面部识别认证的工具。通过红外摄像头和面部识别技术,可以实现快速、便捷的身份验证,支持登录、锁屏、sudo 等场景。

本文将详细介绍如何在 Ubuntu 系统上从源码安装 Howdy,并配置完整的中文界面支持。


✨ 特性介绍

  • Windows Hello 风格认证 - 类似 Windows 的面部识别体验
  • PAM 集成 - 支持登录、sudo、su 等所有认证场景
  • 完整中文支持 - CLI、GTK 界面、PAM 模块全面汉化
  • 高安全性 - 使用 dlib 深度学习模型,难以欺骗
  • 开源免费 - MIT 许可证,完全开源

📋 系统要求

硬件要求

  • 红外摄像头或者普通摄像头也行
  • 内存 - 至少 2GB RAM

软件要求

  • 操作系统 - Ubuntu 20.04/22.04/24.04 或其他 Debian 系发行版
  • Python - 3.6 或更高版本
  • 编译器 - GCC/G++
  • 构建工具 - Meson、Ninja

🔧 一、安装依赖

1.1 更新系统

sudo apt update
sudo apt upgrade -y

1.2 安装基础依赖

sudo apt install -y \
    python3 python3-pip python3-setuptools python3-wheel \
    cmake make build-essential \
    libpam0g-dev libinih-dev libevdev-dev \
    python3-opencv python3-dev libopencv-dev \
    gettext pkg-config

1.3 安装 Meson 和 Ninja

# 方法一:使用 pip 安装(推荐)
pip3 install meson ninja

# 方法二:使用 apt 安装
sudo apt install -y meson ninja-build

验证安装:

meson --version
ninja --version

📥 二、下载源码

2.1 克隆仓库

# 从 Gitee 克隆(国内推荐)
git clone https://gitee.com/fish--big/howdy_zh_-cn.git
cd howdy_zh_-cn

# 或者从 GitHub 克隆
# git clone https://github.com/boltgolt/howdy.git
# cd howdy

2.2 查看项目结构

ls -la

应该看到以下主要文件和目录:

howdy/                  # 核心模块
howdy-gtk/             # GTK 图形界面
scripts/               # 部署脚本
README_zh_CN.md        # 中文文档

🏗️ 三、编译安装

3.1 配置构建

# 创建构建目录并配置
meson setup build --prefix=/usr --buildtype=release

参数说明:

  • --prefix=/usr - 安装到系统目录
  • --buildtype=release - 发布模式(优化性能)

3.2 编译

meson compile -C build

⚠️ 注意:dlib 的编译可能需要较长时间(5-15分钟),并且在 100% 处可能停留一段时间,请耐心等待。

3.3 安装

sudo meson install -C build

这里安装失败大概了是meson和sudo meson的版本不同,下面的方法可以解决

sudo "$(which meson)" install -C build

3.4 验证安装

# 检查命令是否可用
which howdy

# 查看版本
howdy version

# 查看帮助
howdy --help

🌏 四、配置中文界面

本项目已完整汉化,包括 CLI 命令行、GTK 界面和 PAM 模块。

4.1 设置语言环境

# 临时设置
export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8

# 永久设置(添加到 ~/.bashrc)
echo 'export LANG=zh_CN.UTF-8' >> ~/.bashrc
echo 'export LC_ALL=zh_CN.UTF-8' >> ~/.bashrc
source ~/.bashrc

4.2 部署翻译文件

项目提供了两个自动化脚本来简化部署:

方法一:快速部署(推荐)
sudo ./scripts/deploy_zh.sh
方法二:完整部署(带详细诊断)
sudo ./scripts/install_zh_translations.sh

4.3 验证中文界面

# 测试帮助命令
sudo howdy --help

# 测试列表命令
sudo howdy list

如果看到中文输出,说明配置成功!✅


📷 五、硬件配置

5.1 查看摄像头设备

# 列出所有视频设备
v4l2-ctl --list-devices

输出示例:

Integrated Camera: Integrated C (usb-0000:00:14.0-5):
	/dev/video0
	/dev/video1

USB Camera: USB Camera (usb-0000:00:14.0-8):
	/dev/video2
	/dev/video3

💡 提示:通常 /dev/video0 是主摄像头,红外摄像头可能是 /dev/video1 或其他编号。

5.2 配置摄像头路径

# 打开配置文件
sudo howdy config

在配置文件中找到并修改:

# The path of the device to capture frames from
# Video devices are usually found in /dev/v4l/by-path/
device_path = /dev/video0

device_path 设置为您的红外摄像头设备路径。

使用稳定路径(推荐)
# 查看稳定的设备路径
ls -l /dev/v4l/by-path/

输出示例:

pci-0000:00:14.0-usb-0:5:1.0-video-index0 -> ../../video0
pci-0000:00:14.0-usb-0:5:1.0-video-index1 -> ../../video1

在配置文件中使用稳定路径:

device_path = /dev/v4l/by-path/pci-0000:00:14.0-usb-0:5:1.0-video-index0

这样可以避免设备重启后路径变化的问题。


🧪 六、测试与添加面部模型

6.1 测试摄像头

# 测试摄像头和识别
sudo howdy test

这个命令会:

  1. 打开摄像头预览
  2. 尝试识别您的面部
  3. 显示识别结果和置信度

⚠️ 重要提示:务必执行此测试!如果配置不正确,可能会导致系统锁定。

6.2 添加面部模型

# 添加面部模型
sudo howdy add

按照提示操作:

  1. 输入模型标签:例如 “默认”、“戴眼镜”、“晚上” 等
  2. 直视摄像头:保持头部稳定,不要移动
  3. 等待捕获:系统会捕获多帧图像
  4. 生成模型:自动创建面部识别模型

可以添加多个模型以提高识别率:

# 添加不同光线条件下的模型
sudo howdy add
# 标签:白天

sudo howdy add
# 标签:晚上

sudo howdy add
# 标签:戴眼镜

6.3 管理面部模型

# 列出所有模型
sudo howdy list

# 删除特定模型(ID 从 list 命令获取)
sudo howdy remove <ID>

# 清除所有模型
sudo howdy clear

🔐 七、PAM 权限配置

7.1 配置 sudo 认证

编辑 /etc/pam.d/sudo

sudo nano /etc/pam.d/sudo

在文件开头添加:

auth    sufficient      pam_howdy.so

完整示例:

#%PAM-1.0

auth    sufficient      pam_howdy.so
auth    include         @common-auth
account include         @common-account
session include         @common-session
session include         @common-session-noninteractive

7.2 配置登录认证(Debian/Ubuntu)

编辑 /etc/pam.d/common-auth

sudo nano /etc/pam.d/common-auth

确保包含以下内容:

# here are the per-package modules (the "Primary" block)
auth    [success=3 default=ignore]      pam_howdy.so
auth    [success=2 default=ignore]      pam_unix.so nullok try_first_pass
auth    [success=1 default=ignore]      pam_sss.so use_first_pass
# here's the fallback if no module succeeds
auth    requisite                       pam_deny.so
# prime the stack with a positive return value if there isn't one already;
auth    required                        pam_permit.so
# and here are more per-package modules (the "Additional" block)
auth    optional                        pam_cap.so
# end of pam-auth-update config

关键配置说明:

  • pam_howdy.so 应该在 pam_unix.so 之前
  • [success=3 default=ignore] 表示如果 Howdy 认证成功,跳过后面 3 行
  • 如果 Howdy 失败,会继续尝试密码认证

7.3 配置登录管理器

GDM(GNOME)

编辑 /etc/pam.d/gdm-password

sudo nano /etc/pam.d/gdm-password

添加:

auth    sufficient      pam_howdy.so
auth    substack        password-auth
SDDM(KDE)

编辑 /etc/pam.d/sddm

sudo nano /etc/pam.d/sddm

添加:

auth    sufficient      pam_howdy.so
auth    include         system-auth

⚙️ 八、高级配置

8.1 编辑配置文件

sudo howdy config

8.2 常用配置项

[core]
# 认证超时时间(秒)
timeout = 4

# 识别置信度阈值(0.0-1.0,越低越宽松)
certainty = 3.5

# 是否在工作时禁用(防止误触发)
disable_when_closed = true

# 日志级别(0=无,1=错误,2=警告,3=信息)
log_level = 2

[video]
# 摄像头设备路径
device_path = /dev/video0

# 帧宽度
frame_width = 400

# 帧高度
frame_height = 400

# 曝光补偿
exposure = -6

[behavior]
# 认证成功后是否播放声音
sound = false

# 是否在终端显示通知
notification = true

8.3 禁用/启用 Howdy

# 临时禁用 Howdy
sudo howdy disable 1

# 重新启用 Howdy
sudo howdy disable 0

# 检查当前状态
sudo howdy disable

🎨 九、GTK 图形界面(可选)

如果安装了 howdy-gtk,可以使用图形界面进行配置:

sudo howdy-gtk

提供功能:

  • 📷 摄像头配置
  • 👤 面部模型管理
  • ⚙️ 设置调整
  • 🧪 实时测试

❓ 十、常见问题

Q1: 为什么还是显示英文?

解决方法:

# 1. 检查语言环境
locale | grep LANG

# 2. 设置中文环境
export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8

# 3. 重新部署翻译
sudo ./scripts/deploy_zh.sh

# 4. 清除缓存
sudo find /usr/lib/x86_64-linux-gnu/howdy/ -name "*.pyc" -delete
sudo find /usr/lib/x86_64-linux-gnu/howdy/ -name "__pycache__" -type d -exec rm -rf {} +

Q2: 摄像头无法打开

解决方法:

# 1. 检查设备是否存在
ls -l /dev/video*

# 2. 检查权限
sudo chmod 666 /dev/video0

# 3. 测试摄像头
ffplay /dev/video0

# 4. 检查是否有其他程序占用
sudo lsof /dev/video0

Q3: 识别失败或超时

解决方法:

# 1. 降低置信度阈值(更容易识别)
sudo howdy config
# 修改 certainty = 3.5 为 certainty = 2.5

# 2. 增加超时时间
# 修改 timeout = 4 为 timeout = 6

# 3. 重新添加面部模型(在不同光线下)
sudo howdy add

# 4. 检查日志
tail -f /var/log/auth.log

Q4: 系统锁定无法登录

紧急恢复方法:

# 1. 切换到 TTY(Ctrl+Alt+F2)
# 2. 登录并禁用 Howdy
sudo howdy disable 1

# 3. 或者从恢复模式启动
# 4. 或者使用 Live USB 挂载系统分区
# 5. 编辑 PAM 配置文件,注释掉 pam_howdy.so 行

⚠️ 预防建议:始终保留一个 root 终端会话,直到确认 Howdy 工作正常。

Q5: 编译时卡在 dlib

解决方法:

这是正常现象,dlib 编译需要较长时间。请:

  • 耐心等待(可能需要 10-15 分钟)
  • 确保有足够的内存(建议 4GB+)
  • 不要中断编译过程

🔍 十一、故障排查

查看日志

# 认证日志
tail -f /var/log/auth.log

# 系统日志
journalctl -u howdy -f

# Howdy 调试模式
sudo HOWDY_LOG_LEVEL=3 howdy test

重新部署

如果遇到问题,可以重新运行部署脚本:

# 快速重新部署
cd /path/to/howdy_zh_-cn
sudo ./scripts/deploy_zh.sh

# 或完整重新部署(带详细诊断)
sudo ./scripts/install_zh_translations.sh

⚠️ 十二、安全说明

重要警告

Howdy 的安全性不如密码,永远不应该作为唯一的认证方式。

虽然面部识别比传统人脸识别更难欺骗,但以下情况仍可能绕过:

  • 与您相似的人
  • 高质量的照片
  • 精心制作的视频

安全建议

  1. 不要将 Howdy 作为唯一认证方式

    • 始终保留密码作为后备
    • PAM 配置应允许密码认证
  2. 保护 Howdy 文件

    # 保持只读权限
    sudo chmod 755 /lib/security/pam_howdy.so
    sudo chmod 644 /usr/lib/howdy/config.ini
    
  3. 定期更新

    • 保持 Howdy 和依赖项最新
    • 关注安全公告
  4. 谨慎使用场景

    • 适合个人电脑的日常使用
    • 不建议用于高安全性环境
    • 不建议作为服务器认证方式

📚 十三、参考资源


🤝 十四、贡献与支持

参与方式

  1. ⭐ Star 本仓库
  2. 🐛 提交 Issues 报告问题或建议
  3. 💻 提交 Pull Request 贡献代码
  4. 🌍 改进翻译质量
  5. ☕ 支持开发者

反馈渠道


📝 总结

通过本文的详细教程,您已经成功在 Ubuntu 系统上从源码安装了 Howdy 面部识别系统,并配置了完整的中文支持。

主要步骤回顾:

  1. ✅ 安装系统依赖
  2. ✅ 下载并编译源码
  3. ✅ 部署中文翻译
  4. ✅ 配置摄像头硬件
  5. ✅ 添加面部模型
  6. ✅ 配置 PAM 认证
  7. ✅ 测试验证

现在您可以享受便捷的面部识别认证体验了!🎉


最后更新:2026-04-04
作者:FishLight
许可证:MIT License


如果觉得本文有帮助,欢迎点赞、收藏、转发!如有疑问,欢迎在评论区留言交流。😊

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐