已安装opencv-contrib模块仍无法执行cv2.face.LBPHFaceRecognizer_create()命令的技术求助
解决AttributeError: module 'cv2.cv2' has no attribute 'face'的问题
别着急,这个问题我碰到过好几次,大多是版本不兼容或者环境没对应上导致的,给你几个靠谱的排查和解决步骤:
第一步:确认OpenCV和contrib版本完全匹配
这是最常见的原因!如果你装的opencv-python和opencv-contrib-python版本不一致,就会出现模块找不到的情况。你可以先在终端里运行命令查看当前安装的版本:- Windows:
pip list | findstr opencv - Linux/macOS:
pip list | grep opencv
如果两个包的版本号不一样,先把它们都卸载:
pip uninstall opencv-python opencv-contrib-python -y然后重新安装同一版本的包,比如选一个稳定的版本(比如4.5.5.62):
pip install opencv-python==4.5.5.62 opencv-contrib-python==4.5.5.62要是想装最新兼容版本,直接运行:
pip install opencv-python opencv-contrib-python- Windows:
第二步:检查代码运行环境是否和安装环境一致
很多人用虚拟环境的时候容易踩这个坑——包装在了全局环境,但代码却在虚拟环境里跑,反过来也一样。你可以在代码里加两行先确认:import cv2 print(cv2.__file__)运行后会输出cv2模块的安装路径,你再对比终端里
pip show opencv-python输出的Location路径,要是不一样,就切换到正确的环境重新安装包。第三步:避免混合使用conda和pip安装OpenCV
如果你是用conda管理环境的,别用pip装contrib包,不然很容易冲突。先卸载用pip装的包,然后用conda安装:pip uninstall opencv-python opencv-contrib-python -y conda install -c conda-forge opencv-contrib-python第四步:尝试直接导入face模块
有时候直接调用cv2.face会有导入延迟的问题,你可以试试先单独导入face模块再使用:from cv2 import face recognizer = face.LBPHFaceRecognizer_create()第五步:清理缓存重新安装
如果之前安装过程中出了差错,缓存可能会导致安装不完整。卸载后加上--no-cache-dir参数重装:pip uninstall opencv-python opencv-contrib-python -y pip install --no-cache-dir opencv-python opencv-contrib-python
按照这些步骤一步步排查,应该就能解决问题了!
内容的提问来源于stack exchange,提问作者Shravan Khar




