树莓派系统下Python3.5.3安装OpenCV及兼容face_recognition咨询
解决树莓派上OpenCV与face_recognition跨Python版本兼容的方案
我之前在树莓派折腾CV项目时也碰到过一模一样的版本兼容坑,给你几个经过实际验证的解决方案,应该能帮你搞定两个库的共存问题:
方案一:针对Python2.7和Python3.5分别适配库版本
对于Python2.7环境
face_recognition官方已经停止对Python2的支持,依赖的dlib库在Python2.7下编译会遇到大量兼容性问题,不建议强行适配。如果你的Python2项目必须做人脸识别,可以用opencv-contrib-python的内置人脸模块替代:
# 激活Python2环境后执行 pip install opencv-contrib-python==3.4.2.16
这个版本的OpenCV-contrib自带人脸检测、识别模块,能满足基础需求,且和你现有能正常工作的OpenCV环境兼容。
对于Python3.5环境
Python3.5无法直接通过pip安装OpenCV预编译包,建议通过源码编译适配的OpenCV版本(推荐3.4.x系列,对Python3.5兼容性最好):
- 先安装编译依赖:
sudo apt-get update && sudo apt-get install build-essential cmake pkg-config libjpeg-dev libtiff5-dev libpng-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libfontconfig1-dev libcairo2-dev libgdk-pixbuf2.0-dev libpango1.0-dev libgtk2.0-dev libgtk-3-dev libatlas-base-dev gfortran python3-dev python3-numpy
- 下载对应版本的OpenCV及contrib模块:
git clone --branch 3.4.16 https://github.com/opencv/opencv.git git clone --branch 3.4.16 https://github.com/opencv/opencv_contrib.git
- 编译安装:
cd opencv && mkdir build && cd build cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_PYTHON_EXAMPLES=ON -D INSTALL_C_EXAMPLES=OFF -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules -D PYTHON_EXECUTABLE=/usr/bin/python3.5 -D BUILD_EXAMPLES=ON .. # 树莓派3用-j2,树莓派4用-j4,根据CPU核心数调整 make -j4 sudo make install sudo ldconfig
编译完成后,Python3.5就能正常调用OpenCV,同时保留已能正常运行的face_recognition。
方案二:升级Python3版本到3.7+(更推荐)
Python3.5过于老旧,很多现代库的预编译包都不再支持它。升级到Python3.8或3.9(树莓派稳定支持的版本)后,两个库都能通过pip直接安装,省去源码编译的麻烦:
- 安装升级依赖:
sudo apt-get update && sudo apt-get install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget
- 下载并编译Python3.8源码:
wget https://www.python.org/ftp/python/3.8.16/Python-3.8.16.tgz tar -xf Python-3.8.16.tgz cd Python-3.8.16 ./configure --enable-optimizations make -j4 # 用altinstall避免覆盖系统默认Python3 sudo make altinstall
- 直接安装两个库:
pip3.8 install opencv-python face_recognition
升级后的环境不仅能完美兼容两个库,后续使用其他Python库也会减少很多兼容性问题。
方案三:用虚拟环境隔离两个Python环境
如果需要同时保留Python2.7和Python3的工作环境,避免库版本冲突,可以用虚拟环境做隔离:
- Python2.7环境:
sudo apt-get install python-virtualenv virtualenv -p /usr/bin/python2.7 py2_cv_env source py2_cv_env/bin/activate # 在虚拟环境中安装适配的OpenCV pip install opencv-python==3.4.2.16
- Python3.5(或升级后的3.8)环境:
sudo apt-get install python3-venv python3 -m venv py3_cv_env source py3_cv_env/bin/activate # 安装OpenCV和face_recognition pip install opencv-python face_recognition
使用时激活对应的虚拟环境即可,两个环境完全独立,不会互相干扰。
内容的提问来源于stack exchange,提问作者Salil Sharma
相关产品推荐
相关产品推荐

