OpenCV 3.3+ 版本中,人脸识别相关类(如LBPH、Eigen、Fisher)已统一归入子模块cv2.face,而非cv2.Face——后者根本不存在,直接导致AttributeError。修复只需修正模块路径并确保安装了opencv-contrib-python。
opencv 3.3+ 版本中,人脸识别相关类(如lbph、eigen、fisher)已统一归入子模块`cv2.face`,而非`cv2.face`——后者根本不存在,直接导致`attributeerror`。修复只需修正模块路径并确保安装了`opencv-contrib-python`。
在 OpenCV 中实现基于 LBPH 的人脸检测与识别时,一个常见但关键的错误是误写模块路径。你遇到的 AttributeError: module 'cv2' has no attribute 'Face' 并非因 OpenCV 未安装,而是因为:
✅ cv2.Face 是完全错误的命名空间 —— OpenCV 官方从未提供 cv2.Face 这一属性;
✅ 正确路径是 cv2.face(全小写),且该模块位于独立扩展包 opencv-contrib-python 中。
✅ 正确代码写法
import cv2
# 1. 加载 Haar 分类器(用于检测)
faceCascade = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
# 2. 创建 LBPH 识别器(注意:cv2.face,不是 cv2.Face!)
clf = cv2.face.LBPHFaceRecognizer_create()
# 3. 加载训练好的模型
clf.read("clf.xml")⚠️ 必要前提:安装 opencv-contrib-python
cv2.face 模块不属于 OpenCV 主包,必须额外安装配套扩展包:
# 卸载可能冲突的旧版本 pip uninstall opencv-python opencv-contrib-python # 同时安装主包 + 贡献包(版本严格匹配!) pip install opencv-python==4.9.0.80 opencv-contrib-python==4.9.0.80
? 提示:OpenCV 4.7+ 已弃用 cv2.face.createLBPHFaceRecognizer() 等旧接口,统一使用 cv2.face.LBPHFaceRecognizer_create()(带下划线、驼峰组合),请勿混用历史写法。
? 补充验证:检查模块是否可用
运行以下代码确认 cv2.face 已就绪:
import cv2 print(hasattr(cv2, 'face')) # 应输出 True print(dir(cv2.face)) # 可查看可用类,如 LBPHFaceRecognizer_create, EigenFaceRecognizer_create 等
✅ 总结
- ❌ 错误:cv2.Face.LBPHFaceRecognizer_create() → 触发 AttributeError;
- ✅ 正确:cv2.face.LBPHFaceRecognizer_create();
- ? 必装依赖:opencv-contrib-python(版本需与 opencv-python 一致);
- ? 分类器 XML 文件(如 haarcascade_frontalface_default.xml)需从 OpenCV GitHub /data/haarcascades 下载并置于项目路径下。
遵循以上规范,即可顺利初始化 LBPH 识别器,进入后续的人脸训练与预测流程。

















