You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

树莓派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找不到它:

  1. 先找到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
  1. 现在打开Python3.6,输入import cv2试试,应该就能正常导入了。

方案3:从源码编译(最稳定,适合长期使用)

如果上面两个方案都不行,源码编译是终极解决方案,虽然耗时,但能保证完全适配你的系统:

  1. 先安装所有依赖:
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
  1. 下载指定版本的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
  1. 配置编译参数:
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 ..
  1. 开始编译(树莓派3B+用4线程加快速度,大概需要1-2小时):
make -j4
sudo make install
sudo ldconfig
  1. 编译完成后,打开Python3.6输入import cv2,验证成功即可。

内容的提问来源于stack exchange,提问作者Sayan Sen

火山引擎 最新活动