在执行人脸识别的代码的时候,系统报错,如下:
recognizer = cv2.face.LBPHFaceRecognizer_create()
AttributeError: module ‘cv2.face’ has no attribute ‘LBPHFaceRecognizer_create’
查了很多资料,有人说什么pip卸载opencv再重装,有人说直接去github找源码编译,还有人说缺少了opencv-contrib-python,需要pip install opencv-contrib-python,反正只要是你们能在百度上能找到的帖子我都看了就是不行。
我在github上下载了无数个opencv的版本,老的有3.2.0的最新的有4.5.5的,但是都没成功过。
最后皇天不负有心人,我找到了一个博主的说可能你的环境很乱,里面很多个版本,所以你先去创建一个虚拟环境,我也不记得怎么弄了,大家自己去百度能搜到,然后你就会出现tutorial env 这几个字眼,就表示你在虚拟环境中。机缘巧合之下,我又看到另一个博主的代码,他的pip有点不同,多了几个参数,我就试了一下,随便想了一个版本,死马当活马医就是。最后成功了
pip3 install --no-cache-dir opencv-python==4.1.1
pip3 install --no-cache-dir opencv-contrib-python==4.1.1
我之前试过的版本都不行,就4.1.1可以,你知道源码编译一次opencv在树莓派上要多久嘛???好几个小时!!
就是下面这一串东西,我编译了无数个版本,就是不是,这里的4.1.1是我找的哈,当时我肯定没用过4.1.1的这是我从别人那copy过来的,这个方法太费时间,直接上面两行就搞定,大概几分钟吧,慢点的十几分钟,下面这个编译要几个小时!
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-4.1.1/modules \
-D ENABLE_NEON=ON \
-D ENABLE_VFPV3=ON \
-D BUILD_TESTS=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D BUILD_EXAMPLES=ON ..
我这几天把源码起码编译了不下于十次,各种版本都试过了,耗时长还是没解决。最后就用上面两行代码解决了,必须得记录一下,如果后面有人也遇到这个问题,心态炸了的话,不妨按我的试试,我是真的一开始能搜的资料都试过了,没一个可以的。
后面不用虚拟环境我试了一下,直接上面两行代码就可以搞定
记得在命令行上面输入python,进入python后输入
import cv2
cv2.__version__
看看你的版本是不是变成4.1.1
然后你再输入from cv2 import face
看看有没有报错。没有报错的话没说明你的人脸识别模块基本没问题了。`
最后我还安装了一个叫pillow的东西才能运行我的人脸识别代码,反正后面还会报一个错误,只要你安装了
pip install pillow
就行。对了如果之前安装了opencv,和pillow 什么的麻烦都先先卸载掉,用pip uninstall xxx(你要卸载的东西)
甚至你可以去全局搜索找到含有cv2的目录都给删了,再去执行我上面的代码。这样你的opencv人脸模块那边才能放心安装。