重要前提:选择正确的操作系统
在开始之前,请确保你使用的是 64-bit 版本的 Raspberry Pi OS。

- 为什么必须用 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 包。
优点:

- 安装速度极快(几分钟内完成)。
- 无需编译,节省 CPU 时间和电量。
- 稳定可靠,由 OpenCV 官方维护。
缺点:
- 可能不是最新的 OpenCV 版本(但对于绝大多数应用已经足够)。
- 某些高度优化的功能可能不如自己编译的性能好,但差异不大。
安装步骤:
-
更新系统包列表 在终端中运行,确保你的系统是最新的。
sudo apt update sudo apt upgrade -y
-
安装必要的系统依赖 这些是 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 编译器,某些科学计算库需要它。
-
安装
opencv-python现在使用pip安装,我们建议使用--break-system-packages标志,因为这可以避免与系统自带的 Python 包产生冲突。
(图片来源网络,侵删)pip3 install --break-system-packages opencv-python
-
(可选)安装额外模块 如果你需要使用 OpenCV 的一些扩展功能,
imwrite和imread支持图像格式(如 PNG, JPEG),可以安装opencv-contrib-python,它包含了更多算法。pip3 install --break-system-packages opencv-contrib-python
-
验证安装 创建一个名为
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 资源。
简要步骤:
-
安装所有编译依赖 这是一个非常长的命令,请耐心等待:
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
-
下载 OpenCV 源码
cd ~ git clone https://github.com/opencv/opencv.git git clone https://github.com/opencv/opencv_contrib.git
-
创建编译目录
cd opencv mkdir build && cd build
-
配置 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 .. -
编译和安装 使用
-j4参数可以利用树莓派的 4 个核心进行并行编译,能快一些。-j2也可以,以减少发热。# 使用 4 个核心编译 (根据你的树莓派核心数调整) make -j4 # 安装 sudo make install sudo ldconfig
-
验证安装 验证步骤与方法一相同。
常见问题与解决方案 (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 的最佳实践。
