第1步:环境准备与系统加固
这是最重要的一步,为后续所有操作打下稳定基础。
锁定Mali GPU驱动 (防止“变砖”):新烧录的系统,第一件事就是锁定厂商提供的GPU驱动,防止apt upgrade将其覆盖导致GPU硬件加速失效(退化成llvmpipe)。
# 查找驱动包
dpkg -l | grep -i mali
# 锁定驱动包 (根据查找到的包名)
sudo apt-mark hold libmali-valhall-g610-g13p0-x11-gbm
sudo apt-mark hold libmali-valhall-g610-g13p0-x11-gbm-dbgsym
安装编译所需的依赖包:安装一系列编译工具、图像视频处理库和优化库。
sudo apt update
sudo apt install -y build-essential cmake git pkg-config
sudo apt install -y libjpeg-dev libpng-dev libtiff-dev libwebp-dev
sudo apt install -y libavcodec-dev libavformat-dev libswscale-dev libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev
sudo apt install -y libgtk-3-dev
sudo apt install -y libatlas-base-dev gfortran python3-dev python3-numpy
第2步:获取OpenCV源码 (稳定可靠的方式)
由于网络问题,git clone常常失败。我们采用最稳定的wget直接下载源码包的方式。
创建工作目录:
mkdir ~/opencv_build && cd ~/opencv_build
下载源码压缩包:
注意,可在其他电脑下载后通过MobaXterm拖动到指定文件夹
wget -O opencv.zip https://github.com/opencv/opencv/archive/refs/tags/4.10.0.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/refs/tags/4.10.0.zip
解压并重命名:
unzip opencv.zip
unzip opencv_contrib.zip # 如果是从电脑拷贝的,文件名可能不同
mv opencv-4.10.0 opencv
mv opencv_contrib-4.10.0 opencv_contrib
第3步:CMake编译配置 (最核心、最关键的步骤)
这一步决定了我们最终编译出来的OpenCV具备哪些功能。
进入编译目录:
cd ~/opencv_build/opencv
mkdir build && cd build
执行最终的配置命令:这个命令经过我们多次调整,禁用了所有会引起依赖问题或网络下载问题的非必要模块 (wechat_qrcode, face, sfm, xfeatures2d)。
cmake -D CMAKE_BUILD_TYPE=RELEASE \-D CMAKE_INSTALL_PREFIX=/usr/local \-D OPENCV_EXTRA_MODULES_PATH=~/opencv_build/opencv_contrib/modules \-D PYTHON3_EXECUTABLE=$(which python3) \-D ENABLE_NEON=ON \-D WITH_OPENCL=ON \-D OPENCV_GENERATE_PKGCONFIG=ON \-D BUILD_EXAMPLES=OFF \-D INSTALL_C_EXAMPLES=OFF \-D INSTALL_PYTHON_EXAMPLES=OFF \-D BUILD_opencv_wechat_qrcode=OFF \-D BUILD_opencv_face=OFF \-D BUILD_opencv_sfm=OFF \-D BUILD_opencv_xfeatures2d=OFF \..
第4步:编译 (最耗时、最考验耐心的步骤)
编译过程非常消耗系统资源,特别是内存。
解决内存不足问题:RK3588S虽然有8核,但全速编译会导致内存耗尽而被系统“杀死”。我们通过减少并行任务数来解决。
# 不要使用 make -j8 或 make -j$(nproc)
# 而是使用一个更小的数字
make -j4
- 耐心等待:编译过程会持续一个小时左右,尤其在最后链接opencv_python3模块时,看起来会像“卡住”一样,这是正常现象。
第5步:安装与收尾
安装到系统:将编译好的文件复制到系统目录。
sudo make install
更新动态链接库缓存:让系统能立刻找到新安装的库。
sudo ldconfig
第6步:验证安装成果
通过多种方式确认安装成功且功能正常。
C++环境验证:
pkg-config --modversion opencv4
# 期望输出: 4.10.0
Python环境验证 (最重要):
python3
>>> import cv2
>>> print(cv2.__version__)
# 期望输出: 4.10.0
>>> print(cv2.ocl.haveOpenCL())
# 期望输出: True
>>> exit()
核心要点与避坑指南
- 先锁定驱动,再动apt:这是保证GPU硬件加速不丢失的生命线。
- 网络不好,wget是王道:git clone 和 cmake 中的下载步骤是网络问题的重灾区,直接下载zip包最稳妥。
- 按需编译,果断裁剪:对于不需要的、会引起问题的模块(如wechat_qrcode, sfm等),在cmake阶段果断用 -D BUILD_...=OFF 禁用,可以规避大量错误。
- 内存不足,降低并行:在嵌入式板子上编译大型项目,“Killed”信号基本就是内存不足,降低 -j 后面的数字是标准解法。