Python2.7+OpenCV3.4.1人脸识别代码报错:'face'模块缺失如何解决?
嘿,这个问题我之前帮不少开发者踩过坑,其实根源很清晰——你用的OpenCV 3.4.1默认安装包并不包含face模块,这个模块被移到了opencv_contrib扩展库中,得额外处理才能用。下面给你针对Python 2.7 + OpenCV 3.4.1的具体解决方案:
解决步骤
1. 先搞懂问题本质
OpenCV 3.x版本开始,把人脸识别、特征匹配这类非核心模块从主库拆分到了opencv_contrib扩展包里,所以直接装默认的OpenCV,自然找不到cv2.face这个属性。
2. 两种可行解决方案
方案一:快速安装预编译的带contrib的包(推荐)
不想折腾编译的话,直接装对应版本的预编译包是最快的:
- 先卸载已有的OpenCV:
pip uninstall opencv-python - 安装匹配版本的带contrib的包:
这个版本完全对应OpenCV 3.4.1,且内置了pip install opencv-contrib-python==3.4.1.15opencv_contrib模块,安装完成后就能正常调用cv2.face了。
方案二:手动编译源码(适合需要自定义配置的场景)
如果预编译包无法满足你的需求(比如需要开启特定编译选项),可以手动编译:
- 下载完全对应版本的OpenCV 3.4.1源码和opencv_contrib 3.4.1源码(版本必须严格一致,否则编译会报错)
- 安装编译依赖:比如在Ubuntu系统下,执行:
sudo apt-get install build-essential cmake libopencv-dev python-dev - 用cmake配置编译参数:重点要把
OPENCV_EXTRA_MODULES_PATH指向你下载的opencv_contrib/modules目录,同时确保开启Python 2.7的支持 - 编译并安装:
make -j4 && sudo make install - 最后把编译生成的
cv2.so文件复制到Python 2.7的site-packages目录下
3. 验证修复效果
安装完成后,打开Python 2.7终端测试:
import cv2 print(cv2.face)
如果能正常输出模块信息而不报错,就说明问题解决了~
内容的提问来源于stack exchange,提问作者Niharika Nisangi
相关产品推荐
相关产品推荐

