face-recognition 安装

时间:2025-10-10 05:49:55  阅读量:  分类:标签:

在安装 face-recognition 库时遇到的核心问题是 缺少必要的 C++ 编译环境

导致 dlib 库(face-recognition 的依赖)无法编译安装。

以下是具体解决方案:

推荐使用方法3、

dlib 是一个基于 C++ 的库,在 Windows 上安装时需要通过源码编译

而编译过程依赖 Visual Studio 的 C++ 开发工具链。

方法 1:安装 Visual Studio 及 C++ 编译工具

下载 Visual Studio

前往 Visual Studio 官网,下载 Community 版(免费,足够满足需求)。

安装时勾选必要组件

运行安装程序,在「工作负载」中勾选:

使用 C++ 的桌面开发(必须勾选,包含编译所需的工具链)

可选:勾选「Python 开发」(如果需要与 Python 集成)

重启电脑

安装完成后重启,确保环境变量生效。

重新安装库

打开命令行(或 Anaconda Prompt),执行:

# 先激活你的环境(如果使用conda)
conda activate myfastapi
# 安装dlib(face-recognition的依赖)
pip install dlib
# 再安装face-recognitionpip install face-recognition

方法 2:使用预编译的 dlib 版本(避免编译)

如果不想安装 Visual Studio,可以尝试直接安装预编译好的 dlib 二进制包:

访问 Unofficial Windows Binaries for Python Extension Packages,下载与你的 Python 版本和系统匹配的 dlib 轮子(.whl 文件)。

例如:Python 3.10 + 64 位系统 → 选择 dlib-19.24.0-cp310-cp310-win_amd64.whl

安装下载的 .whl 文件:

# 切换到下载目录
cd 你的下载路径
# 安装dlib
pip install dlib-19.24.0-cp310-cp310-win_amd64.whl  # 替换为你下载的文件名
# 再安装face-recognition
pip install face-recognition

方法 3:通过 conda 安装(推荐给 Anaconda 用户)

如果使用 Anaconda/Miniconda,可以直接通过 conda 安装预编译的 dlib(无需手动编译):

# 激活环境
conda activate myfastapi
# 安装dlib(conda仓库中的版本可能稍旧,但稳定性高)
conda install -c conda-forge dlib
# 安装face-recognition
pip install face-recognition

总结

最根本的解决方案是 安装 Visual Studio 并勾选 C++ 开发组件,这能一劳永逸解决 Windows 上大多数 C++ 扩展库的编译问题。如果嫌麻烦,可优先尝试 conda 安装或预编译的 .whl 包。

 CMake 工具,dlib 库需要通过 CMake 进行编译。以下是解决方法:

1、安装 CMake

    • 访问 CMake 官网 下载适合你系统的安装程序

    • 安装时务必勾选 "Add CMake to the system PATH" 选项(Windows 用户)

    • 安装完成后,重新打开命令行窗口,输入 cmake --version 验证是否安装成功

2、重新安装依赖先安装 dlib,再安装其他库:

pip install dlib
pip install face-recognition

3、备选方案如果仍有问题,可以尝试使用 conda 安装 dlib(可能会更顺利):

conda install -c conda-forge dlib
pip install face-recognition

安装完成后,建议再次验证是否成功:

python -c "import dlib; import cv2; import face_recognition; print('安装成功')"

4、演示代码

import face_recognition                          # 读取人脸图片
Freeman = face_recognition.load_image_file("./file/01.png")
Feature = face_recognition.face_encodings(Freeman)[0]# 计算人脸特征
Who = face_recognition.load_image_file("who.jpg") # 读取未知人脸
Feature2 = face_recognition.face_encodings(Who)[0]
matches = face_recognition.compare_faces([Feature], Feature2)
if matches[0] == True:                 # 特征对比
    print('是Freeman')