You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用face_recognition.face_encodings致Python实时人脸识别程序崩溃求助

问题原因分析

1. 版本兼容性冲突

face_recognition 1.2.8是2019年的旧版本,未针对Python 3.10做适配,其依赖的dlib库在Python 3.10环境下编译时可能出现二进制接口不兼容,导致compute_face_descriptor()方法接收的参数格式不符合预期,触发TypeError并直接崩溃。

2. OpenCV后端警告(qt.qpa.plugin)

该警告是OpenCV的Qt GUI后端加载异常导致的,虽不是崩溃的直接原因,但会影响摄像头画面的正常显示,可能和系统Qt环境缺失、OpenCV编译时未正确关联Qt组件有关。

3. 核心功能缺失导致无法识别

移除face_encodings语句后,程序跳过了人脸特征提取的核心步骤,自然无法完成人脸识别,这属于正常现象,不是独立问题。

解决方法

方案一:调整版本适配(优先推荐)

  • 降级Python到3.8或3.9版本:face_recognition 1.2.8对这两个版本的兼容性经过验证,可避免dlib接口不兼容问题。
  • 或升级face_recognition到最新兼容版本:安装face_recognition>=1.3.0(该版本支持Python 3.10),同时确保dlib版本匹配(需>=19.22.0,可通过pip install dlib --upgrade更新)。

方案二:修复图像格式转换

确认官方示例中的BGR转RGB步骤是否正确执行,OpenCV读取的摄像头帧为BGR格式,而face_recognition要求输入RGB格式图像,需在代码中添加:

rgb_frame = frame[:, :, ::-1]

确保在调用face_recognition.face_encodings(rgb_frame)前完成格式转换,避免因图像格式错误触发compute_face_descriptor()的参数异常。

方案三:解决OpenCV Qt后端警告

  • Linux环境:在运行程序前设置环境变量:
    export QT_QPA_PLATFORM=xcb
    
  • Windows环境:在代码开头添加:
    import os
    os.environ['QT_QPA_PLATFORM'] = 'windows'
    
  • 通用方法:强制OpenCV使用其他显示后端,比如在代码开头添加:
    cv2.setUseOptimized(True)
    cv2.setNumThreads(0)
    

内容的提问来源于stack exchange,提问作者Stacy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 18:01:18