python3+opencv_contrib安装教程Anaconda,人脸识别、目标跟踪,解决module 'cv2.face' has no attribute '***'等问题

本文分享了作者在使用Python3与OpenCV进行视频中人体跟踪项目的开发过程中遇到的环境配置问题及解决方案,详细介绍了如何正确安装Anaconda3与特定版本的OpenCV+contrib包来避免模块属性错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为毕业设计的需要,使用python3+opencv来做视频中的人体跟踪,安装完python和opencv之后运行程序出现一堆错误,比如:

module 'cv2.face' has no attribute 'createEigenFaceRecognizer',总之遇到过很多module 'cv2.face' has no attribute '***',后来经过大量百度,花费了将近一周的时间,终于问题解决了,经历这么多总觉着自己在开发环境上浪费这么多时间,实在是不应该呀。所以专门写一篇文章告诉后来人,如何在短时间内解决开发环境的问题,防止再犯我这样的错误。只需要按照我的步骤安装是一定没有问题的。

本机操作系统:win10

1.安装Anaconda3-4.4.0

https://repo.continuum.io/archive/Anaconda3-4.4.0-Windows-x86_64.exe

默认安装就可以,这里没有需要强调的特殊操作

2.安装opencv+contrib包

opencv_contrib_python-3.2.0.7-cp36-cp36m-win_amd64.whl

下载完成之后,拷贝到安装的Anaconda3-4.4.0目录下面。然后打开cmd,执行下面的指令:

>cd C:\ProgramData\Anaconda3   //这里是你具体的安装路径
>pip install opencv_python-3.2.0+contrib-cp36-cp36m-win_amd64.whl 
>pip install opencv_python-3.2.0+contrib-cp36-cp36m-win_amd64.whl 

最好使用管理员权限执行操作,安装完成之后就可以了

3.测试代码

下载此代码进行简单测试:


https://github.com/leiqing110/Moving-target-detection.githttps://github.com/leiqing110/Moving-target-detection.git

 

 

如果上述文章有不对的地方,欢迎大家给我指出来,大家共同进步,谢谢啦

<think>我们正在解决在Spyder中使用OpenCV进行人脸识别时出现的AttributeError:module&#39;cv2&#39;hasnoattribute&#39;face&#39;错误。这个错误通常是因为OpenCVcontrib模块未安装或版本不匹配导致的。解决方案步骤:1.确认安装的是opencv-contrib-python包,而不仅仅是opencv-python。因为人脸识别模块在contrib扩展包中。2.检查OpenCV的版本,确保安装的版本包含face模块。3.在Spyder中检查Python环境是否使用了正确的安装包。具体操作:首先,我们需要安装opencv-contrib-python包。如果已经安装opencv-python,需要先卸载它,然后安装opencv-contrib-python。在命令行(终端或AnacondaPrompt)中执行以下命令:```bashpipuninstallopencv-pythonpipinstallopencv-contrib-python```注意:如果使用Anaconda环境,请确保在Spyder使用的环境中执行这些命令。如果问题仍然存在,可能是因为安装OpenCV版本过高,face模块被移除了(在OpenCV4中,部分face模块被转移到了opencv_contrib仓库的不同位置,或者需要单独安装)。在这种情况下,可以尝试安装一个包含face模块的特定版本,例如4.5.5版本。```bashpipinstallopencv-contrib-python==4.5.5.64```另外,也可以尝试使用以下方式导入face模块:```pythonimportcv2fromcv2.faceimportLBPHFaceRecognizer_create#或者其他具体的类```但根据错误信息,是`cv2.face`整个模块不存在,所以更可能是安装问题。如果在Spyder中运行程序时仍然报错,请检查Spyder使用的Python解释器环境是否与安装opencv-contrib-python的环境一致。在Spyder中,可以通过以下步骤检查环境:1.打开Spyder2.点击菜单栏的"Tools"->"Preferences"->"Pythoninterpreter"3.查看当前使用的解释器路径,确保该环境是安装opencv-contrib-python的环境。如果使用了虚拟环境(如conda环境),请确保在Spyder中选择了该虚拟环境。如果上述步骤仍然不能解决问题,可以尝试在代码中使用以下方式导入:```pythonimportcv2#检查cv2的版本print(cv2.__version__)```如果版本是3.x,那么face模块应该存在。如果是4.x,可能需要使用以下方式:```python#对于OpenCV4,可以尝试face_recognizer=cv2.face.LBPHFaceRecognizer_create()#注意:在4.x中,如果安装contrib,face模块应该可用```但是,根据OpenCV官方文档,从3.1版本开始,face模块就被放到了opencv_contrib中,因此需要安装contrib版本。最后,如果还是不行,可以考虑使用opencv-contrib-python-headless版本(如果没有GUI需求),或者尝试重新创建一个新的虚拟环境,并安装opencv-contrib-python。根据引用[^1]中提到的安装命令,我们也可以参考其安装方式。总结:核心问题在于缺少contrib模块中的face部分,因此重新安装opencv-contrib-python是根本解决方法。下面我们将生成相关问题。</think>### 解决Spyder中OpenCV人脸识别AttributeError错误 在Spyder中使用OpenCV进行人脸识别时出现`AttributeError: module &#39;cv2&#39; has no attribute &#39;face&#39;`错误,通常是因为**未正确安装包含人脸识别模块的OpenCV contrib包**。以下是完整解决方案: --- ### 解决方案步骤 1. **检查当前OpenCV安装** ```python import cv2 print(cv2.__version__) # 查看OpenCV版本 print(dir(cv2)) # 检查是否包含&#39;face&#39;模块 ``` 如果输出中没有`face`,说明未安装contrib扩展包[^1]。 2. **卸载现有OpenCV** 在Anaconda Prompt或终端执行: ```bash pip uninstall opencv-python opencv-python-headless opencv-contrib-python ``` 3. **安装完整contrib包** ```bash pip install opencv-contrib-python==4.5.5.64 # 推荐使用兼容性好的版本 ``` 或安装最新版: ```bash pip install opencv-contrib-python ``` 4. **验证安装** 重启Spyder后执行: ```python import cv2 # 测试人脸识别模块 recognizer = cv2.face.LBPHFaceRecognizer_create() # 应无报错 print("人脸模块可用:", hasattr(cv2, &#39;face&#39;)) # 输出True即成功 ``` 5. **环境一致性检查** - 在Spyder中:`Tools > Preferences > Python interpreter` - 确保选择的解释器与安装OpenCV的环境一致(如`anaconda3/envs/your_env/bin/python`) --- ### 常见问题排查 - **虚拟环境问题**:如果使用conda环境,需在对应环境中执行安装命令 - **版本冲突**:安装特定兼容版本`pip install opencv-contrib-python==4.5.5.64` - **多版本共存**:删除所有`cv2*.so`文件(Linux/Mac)或`cv2.pyd`(Windows) - **IDE缓存**:重启Spyder或执行`importlib.reload(cv2)` > **技术说明**:OpenCV的标准包(`opencv-python`)不包含`face`等扩展模块,必须安装contrib版本才能使用人脸识别算法如LBPH、EigenFaces等[^1]。 --- ### 人脸识别代码示例(安装成功后使用) ```python import cv2 # 初始化人脸识别器 recognizer = cv2.face.LBPHFaceRecognizer_create() detector = cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_default.xml") # 后续添加训练和识别代码... ``` --- ### 相关问题 1. OpenCV中不同人脸识别算法(LBPH/EigenFaces/FisherFaces)有何区别? 2. 如何在Anaconda环境中管理多个OpenCV版本? 3. OpenCV人脸识别在实际项目中的完整工作流程是怎样的? 4. 如何解决OpenCV与其他计算机视觉库(如dlib)的兼容性问题? 5. 使用OpenCV进行实时人脸识别需要哪些性能优化技巧? [^1]: 安装OpenCV contrib扩展包是解决人脸识别模块缺失的关键步骤,标准安装包不包含这些扩展功能。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值