树莓派3 B+安装OpenCV失败求助:多种安装方式均报错
解决树莓派3 B+上OpenCV安装失败的问题
嘿,我之前在树莓派3 B+上折腾OpenCV时也遇到过几乎一模一样的问题,给你几个亲测有效的解决思路,一步步来:
先搞清楚为什么之前的方法失效
- 你用
pip install opencv-python找不到版本,是因为最新版本的opencv-python已经不再支持Python3.6和ARMv7架构(树莓派3B+是ARMv7l),所以pip找不到兼容的包。 apt安装后无法导入cv2,大概率是Python环境的路径问题——系统apt安装的OpenCV放在系统级的site-packages里,但你的Python可能用的是用户级环境或者虚拟环境,没包含这个路径。- Conda的menpo通道本身就没有适配ARM架构的OpenCV包,所以肯定会失败。
方案1:指定兼容版本用pip安装(最简单)
先确保你的pip是最新版,避免源或版本适配问题:
sudo pip3 install --upgrade pip
然后安装兼容Python3.6和ARMv7的旧版本OpenCV,比如4.5.5.62(这个版本我亲测在树莓派3B+上可以正常安装):
# 基础版 pip3 install opencv-python==4.5.5.62 # 如果需要额外模块(比如SIFT/SURF),装contrib版 pip3 install opencv-contrib-python==4.5.5.62
方案2:修复apt安装后的路径问题
如果你已经用sudo apt install python3-opencv装过,那OpenCV的文件其实已经在系统里了,只是你的Python找不到它:
- 先找到cv2的安装位置:
sudo find / -name "cv2*.so"
你应该会得到类似这样的路径:/usr/lib/python3/dist-packages/cv2/python-3.6/cv2.cpython-36m-arm-linux-gnueabihf.so
2. 把这个文件软链接到你的Python环境的site-packages目录里(比如用户级的路径是/home/pi/.local/lib/python3.6/site-packages/):
sudo ln -s /usr/lib/python3/dist-packages/cv2/python-3.6/cv2.cpython-36m-arm-linux-gnueabihf.so /home/pi/.local/lib/python3.6/site-packages/cv2.so
- 现在打开Python3.6,输入
import cv2试试,应该就能正常导入了。
方案3:从源码编译(最稳定,适合长期使用)
如果上面两个方案都不行,源码编译是终极解决方案,虽然耗时,但能保证完全适配你的系统:
- 先安装所有依赖:
sudo apt-get update && sudo apt-get install -y build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt-get install -y python3-dev python3-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
- 下载指定版本的OpenCV源码(还是选4.5.5,兼容你的环境):
cd ~ git clone https://github.com/opencv/opencv.git cd opencv && git checkout 4.5.5 cd .. git clone https://github.com/opencv/opencv_contrib.git cd opencv_contrib && git checkout 4.5.5
- 配置编译参数:
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.6 \ -D BUILD_EXAMPLES=ON ..
- 开始编译(树莓派3B+用4线程加快速度,大概需要1-2小时):
make -j4 sudo make install sudo ldconfig
- 编译完成后,打开Python3.6输入
import cv2,验证成功即可。
内容的提问来源于stack exchange,提问作者Sayan Sen




