杰瑞科技汇

树莓派安装OpenCV Python,环境配置怎么搞?

重要前提:选择正确的操作系统

在开始之前,请确保你使用的是 64-bit 版本的 Raspberry Pi OS

树莓派安装OpenCV Python,环境配置怎么搞?-图1
(图片来源网络,侵删)
  • 为什么必须用 64-bit?
    • 性能更好:64-bit 系统可以访问超过 4GB 的内存,这对于处理高清视频或大型图像至关重要。
    • 软件支持:现代 OpenCV 版本(如 4.x)对 64-bit 系统的支持更好,编译和运行都更稳定。
    • 原生支持:从 Raspberry Pi OS (Legacy) with desktop (64-bit) 开始,官方推荐使用 64-bit 版本。

如何检查你的系统版本? 打开终端,输入:

uname -m

如果输出是 aarch64,那么恭喜你,你正在使用 64-bit 系统,如果输出是 armv7l,你正在使用 32-bit 系统,强烈建议你重装为 64-bit 版本


强烈推荐 - 使用预编译的 opencv-python 包 (适用于 Raspberry Pi OS 64-bit)

这是最简单、最快、最稳定的方法,我们直接从 PyPI (Python Package Index) 安装官方为 ARM64 架构预编译好的 OpenCV 包。

优点:

树莓派安装OpenCV Python,环境配置怎么搞?-图2
(图片来源网络,侵删)
  • 安装速度极快(几分钟内完成)。
  • 无需编译,节省 CPU 时间和电量。
  • 稳定可靠,由 OpenCV 官方维护。

缺点:

  • 可能不是最新的 OpenCV 版本(但对于绝大多数应用已经足够)。
  • 某些高度优化的功能可能不如自己编译的性能好,但差异不大。

安装步骤:

  1. 更新系统包列表 在终端中运行,确保你的系统是最新的。

    sudo apt update
    sudo apt upgrade -y
  2. 安装必要的系统依赖 这些是 Python 和 OpenCV 运行所需要的基础库。

    sudo apt install -y python3-pip python3-dev libatlas-base-dev gfortran
    • python3-pip: Python 的包管理器。
    • python3-dev: Python 开发头文件。
    • libatlas-base-dev: 用于优化的线性代数库(BLAS)。
    • gfortran: GNU Fortran 编译器,某些科学计算库需要它。
  3. 安装 opencv-python 现在使用 pip 安装,我们建议使用 --break-system-packages 标志,因为这可以避免与系统自带的 Python 包产生冲突。

    树莓派安装OpenCV Python,环境配置怎么搞?-图3
    (图片来源网络,侵删)
    pip3 install --break-system-packages opencv-python
  4. (可选)安装额外模块 如果你需要使用 OpenCV 的一些扩展功能,imwriteimread 支持图像格式(如 PNG, JPEG),可以安装 opencv-contrib-python,它包含了更多算法。

    pip3 install --break-system-packages opencv-contrib-python
  5. 验证安装 创建一个名为 test_opencv.py 的文件,并输入以下代码:

    import cv2
    import numpy as np
    # 打印 OpenCV 版本
    print(f"OpenCV Version: {cv2.__version__}")
    # 读取一个图片文件(请确保你有一张名为 test.jpg 的图片在同级目录下)
    # 或者使用一个在线图片 URL
    image_path = "test.jpg" # 替换成你的图片路径
    try:
        img = cv2.imread(image_path)
        if img is not None:
            print(f"成功读取图片,图片尺寸: {img.shape}")
            # 显示图片
            cv2.imshow('Test Image', img)
            cv2.waitKey(0)  # 等待按键
            cv2.destroyAllWindows()
        else:
            print(f"无法读取图片,请检查路径: {image_path}")
            # 如果没有本地图片,尝试创建一个测试窗口
            print("创建一个测试窗口...")
            window = np.zeros((100, 400, 3), np.uint8)
            cv2.putText(window, "OpenCV on Raspberry Pi!", (10, 50), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0, 255, 0), 2)
            cv2.imshow('Test Window', window)
            cv2.waitKey(0)
            cv2.destroyAllWindows()
    except Exception as e:
        print(f"发生错误: {e}")
    

    运行这个脚本:

    python3 test_opencv.py

    如果一切正常,你应该能看到一个窗口弹出,显示图片或文字,并且终端会打印出 OpenCV 的版本号。


从源码编译 (不推荐初学者,但可获取最新/自定义版本)

这种方法适用于你必须使用最新版本的 OpenCV,或者需要开启特定功能(如 CUDA 加速,但树莓派不支持)的情况。

优点:

  • 可以获得最新的 OpenCV 版本。
  • 可以自定义开启或关闭功能。
  • 性能可能经过本地优化。

缺点:

  • 极其耗时:在树莓派上编译可能需要 4-8 小时甚至更久
  • 过程复杂,容易出错。
  • 会占用大量磁盘空间和 CPU 资源。

简要步骤:

  1. 安装所有编译依赖 这是一个非常长的命令,请耐心等待:

    sudo apt-get install -y build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev
  2. 下载 OpenCV 源码

    cd ~
    git clone https://github.com/opencv/opencv.git
    git clone https://github.com/opencv/opencv_contrib.git
  3. 创建编译目录

    cd opencv
    mkdir build && cd build
  4. 配置 CMake 这一步告诉 CMake 如何编译 OpenCV。-D OPENCV_ENABLE_NONFREE=ON 是一个常用选项,它包含了一些专利算法(如 SIFT, SURF)。

    cmake -D CMAKE_BUILD_TYPE=RELEASE \
          -D CMAKE_INSTALL_PREFIX=/usr/local \
          -D OPENCV_ENABLE_NONFREE=ON \
          -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
          -D BUILD_EXAMPLES=ON ..
  5. 编译和安装 使用 -j4 参数可以利用树莓派的 4 个核心进行并行编译,能快一些。-j2 也可以,以减少发热。

    # 使用 4 个核心编译 (根据你的树莓派核心数调整)
    make -j4
    # 安装
    sudo make install
    sudo ldconfig
  6. 验证安装 验证步骤与方法一相同。


常见问题与解决方案 (FAQ)

Q: pip install 失败,提示 ERROR: Could not build wheels for opencv-python A: 这通常是因为你缺少系统依赖(如 libatlas-base-dev)或者你正在使用 32-bit 系统,请按照方法一的步骤,先安装所有系统依赖,并确保你的操作系统是 64-bit 的。

Q: 运行 Python 脚本时,提示 ImportError: libopencv_core.so.4.5.x cannot open shared object file A: 这是因为动态链接器找不到 OpenCV 的库文件,最简单的解决方法是告诉 Python 在哪里找。 在运行脚本前,设置 LD_LIBRARY_PATH 环境变量:

export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
python3 your_script.py

或者,将 opencv-python 安装到用户目录下(使用 --user 标志)通常可以避免这个问题,但可能与其他库有冲突,使用 --break-system-packages 是目前官方推荐的方案。

Q: 我使用的是 Raspberry Pi 5,有什么需要注意的吗? A: Raspberry Pi 5 性能强大,64-bit 操作系统是标配。方法一对你来说同样适用,并且速度会快很多,如果你需要极致性能,可以考虑方法二,但编译时间也会相应缩短。

特性 方法一 (预编译包) 方法二 (从源码编译)
推荐度 ⭐⭐⭐⭐⭐ (强烈推荐) ⭐⭐ (仅特定需求)
安装时间 几分钟 4-8 小时
稳定性 非常高 可能遇到编译错误
性能 良好 理论上最优
适用人群 所有人,特别是初学者和开发者 需要最新版本或特定功能的专家

对于 99% 直接使用方法一 就完全足够了,它简单、快速、稳定,是树莓派上安装 OpenCV 的最佳实践。

分享:
扫描分享到社交APP
上一篇
下一篇