Win10环境OpenCV4.5.1报cv2.cv2无legacy属性错误如何解决
「module 'cv2.cv2' has no attribute 'legacy'」报错修复方案
该错误是由于OpenCV 4.5+版本重构了face扩展模块的接口结构,传统人脸识别相关的API要么调整了调用方式,要么被迁移到了legacy子模块下,同时如果opencv主包和contrib扩展包版本不匹配,也会触发该类属性缺失报错。
步骤1:卸载现有冲突的OpenCV包
先彻底清除环境中已安装的OpenCV相关包,避免版本冲突:
pip uninstall opencv-python opencv-contrib-python -y # 若为多Python版本环境或使用虚拟环境,建议用以下命令确保匹配当前运行环境 python -m pip uninstall opencv-python opencv-contrib-python -y
步骤2:安装版本完全匹配的OpenCV主包和扩展包
必须保证opencv-python和opencv-contrib-python的版本号完全一致,适配你当前4.5.1版本的安装命令如下:
pip install opencv-python==4.5.1.48 opencv-contrib-python==4.5.1.48 # 多版本环境替换为对应命令 python -m pip install opencv-python==4.5.1.48 opencv-contrib-python==4.5.1.48
步骤3:调整代码中识别器初始化的调用接口
找到你代码中初始化人脸识别器的行:
recognizer = cv2.face.LBPHFaceRecognizer_create()
优先修改为适配4.5.1版本的标准接口:
recognizer = cv2.face.LBPHFaceRecognizer.create()
如果修改后仍然报错,再切换为legacy子模块调用写法:
recognizer = cv2.face.legacy.LBPHFaceRecognizer_create()
完成以上操作后重新运行代码,即可正常加载LBPH人脸识别器,不会再触发属性缺失报错。
内容的提问来源于stack exchange,提问作者ms.bigdatax
相关产品推荐
相关产品推荐

