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

无法通过pip安装软件包:安装opencv-python遇版本匹配错误求助

解决树莓派2上安装opencv-python失败的问题

我之前在树莓派2上折腾OpenCV的时候也碰到过一模一样的问题,给你整理几个靠谱的解决办法:

先捋清楚为啥会报错:你的树莓派2是ARMv6架构,而且用的Python3.6.2版本比较老旧,官方的opencv-python预编译包从某个版本开始,就不再支持ARMv6和Python3.6及以下的环境了——说白了就是PyPI上根本没有适配你当前环境的包,所以升级pip也没用。

下面是按推荐程度排序的解决方案:

方案一:用piwheels源装预编译包(最省心)

piwheels是专门给树莓派提供预编译Python包的仓库,里面有适配ARMv6的opencv-python版本,配置起来很简单:

  1. 创建pip配置文件(如果没有的话):
    mkdir -p ~/.pip
    nano ~/.pip/pip.conf
    
  2. 在文件里添加piwheels的源地址:
    [global]
    extra-index-url=https://www.piwheels.org/simple
    
  3. 保存退出后,重新执行安装命令:
    pip3 install opencv-python
    

方案二:指定安装兼容旧环境的特定版本

如果piwheels源访问有问题,你可以直接装最后一个支持Python3.6和ARMv6的opencv-python版本——4.5.5.62

pip3 install opencv-python==4.5.5.62

这个版本的预编译包还存在于PyPI,能完美匹配你的环境。

方案三:简化编译流程(前面方法都不行再试)

手动编译出错大多是因为依赖没装全,或者编译选项太复杂。试试下面简化后的步骤:

  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 python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
    
  2. 克隆对应版本的OpenCV源码(选4.5.5版本,和方案二的兼容版本一致):
    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 ..
    
  3. 创建编译目录并配置cmake,关闭树莓派2不需要的模块(比如CUDA、FFmpeg)来降低编译压力:
    cd opencv && mkdir build && cd build
    cmake -D CMAKE_BUILD_TYPE=RELEASE \
          -D CMAKE_INSTALL_PREFIX=/usr/local \
          -D INSTALL_PYTHON_EXAMPLES=OFF \
          -D INSTALL_C_EXAMPLES=OFF \
          -D OPENCV_ENABLE_NONFREE=ON \
          -D WITH_CUDA=OFF \
          -D WITH_FFMPEG=OFF \
          -D PYTHON_EXECUTABLE=/usr/bin/python3.6 \
          -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
          -D BUILD_EXAMPLES=OFF ..
    
  4. 开始编译(树莓派2性能有限,用-j2指定2个线程,避免卡死):
    make -j2
    sudo make install
    sudo ldconfig
    

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

火山引擎 最新活动