在 UOS(统信操作系统,基于 Debian/Ubuntu 体系)上编译 OpenCV 4.10.0,可按照以下步骤操作,确保依赖完整且编译过程顺利:
一、准备工作
-
更新系统包 首先确保系统包列表最新:
bash
sudo apt update && sudo apt upgrade -y
二、安装依赖项
OpenCV 编译需要多种依赖(基础库、图形库、视频库等),执行以下命令安装:
bash
sudo apt install -y \
build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev \
libavformat-dev libswscale-dev libjpeg-dev libpng-dev libtiff-dev \
libjasper-dev libdc1394-22-dev libeigen3-dev libtheora-dev libvorbis-dev \
libxvidcore-dev libx264-dev sphinx-common libtbb-dev yasm \
libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libopenexr-dev \
libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev libv4l-dev \
libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools \
libatlas-base-dev gfortran libhdf5-dev libprotobuf-dev libleveldb-dev \
libsnappy-dev liblmdb-dev libgoogle-glog-dev libgflags-dev libprotobuf-dev \
protobuf-compiler liblapacke-dev
- 说明:
build-essential、cmake是编译基础工具;libgtk2.0-dev用于 GUI 窗口支持;libavcodec、libavformat等是视频编解码依赖;libjpeg、libpng等是图像格式支持;libqt5*可选,用于 Qt 界面支持(如需可视化工具)。
三、下载 OpenCV 4.10.0 源码
-
从官网或 GitHub 下载源码:
bash
# 创建工作目录 mkdir -p ~/opencv_build && cd ~/opencv_build # 下载OpenCV源码(官网地址或GitHub) wget https://github.com/opencv/opencv/archive/4.10.0.tar.gz -O opencv-4.10.0.tar.gz wget https://github.com/opencv/opencv_contrib/archive/4.10.0.tar.gz -O opencv_contrib-4.10.0.tar.gz # 解压 tar -zxvf opencv-4.10.0.tar.gz tar -zxvf opencv_contrib-4.10.0.tar.gz- 若需扩展模块(如 SIFT、特征匹配等),必须下载
opencv_contrib并与主版本号一致(4.10.0)。
- 若需扩展模块(如 SIFT、特征匹配等),必须下载
四、配置 CMake 编译选项
-
进入 OpenCV 源码目录,创建编译目录并配置:
bash
cd opencv-4.10.0 mkdir build && cd build -
执行 CMake 配置(根据需求调整选项):
bash
cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D INSTALL_C_EXAMPLES=ON \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D OPENCV_GENERATE_PKGCONFIG=ON \ -D OPENCV_EXTRA_MODULES_PATH=~/opencv_build/opencv_contrib-4.10.0/modules \ -D BUILD_EXAMPLES=ON \ -D WITH_QT=ON \ -D WITH_OPENGL=ON \ -D WITH_V4L=ON \ -D WITH_FFMPEG=ON \ -D WITH_GSTREAMER=ON -D BUILD_opencv_world=ON \ ..- 关键选项说明:
CMAKE_INSTALL_PREFIX:安装路径(默认/usr/local);OPENCV_EXTRA_MODULES_PATH:指定opencv_contrib的modules目录(若不编译扩展模块可省略);OPENCV_GENERATE_PKGCONFIG=ON:生成pkg-config文件(方便后续开发);WITH_QT=ON:启用 Qt 支持(如需可视化);- 其他选项按需开启(如
WITH_CUDA用于 GPU 加速,需额外安装 CUDA)。
- 关键选项说明:
-
检查配置结果:配置完成后,确认输出中无关键依赖缺失(如
FFMPEG、GTK等显示YES),否则需补充安装对应依赖。
五、编译与安装
-
编译(根据 CPU 核心数调整
-j参数,加速编译):bash
make -j$(nproc) # $(nproc)自动获取CPU核心数- 若编译过程中出现错误,通常是依赖缺失或
opencv_contrib模块问题,可根据报错信息补充依赖,或暂时移除opencv_contrib重新配置。
- 若编译过程中出现错误,通常是依赖缺失或
-
安装编译好的库:
bash
sudo make install -
更新动态链接库缓存:
bash
sudo ldconfig
六、验证安装
-
检查版本:
bash
pkg-config --modversion opencv4 # 若输出4.10.0则成功 -
运行示例程序(可选):编译目录下的
bin文件夹中有示例程序,如:bash
./bin/opencv_version # 输出版本信息
常见问题解决
- 编译时提示 "缺少某个头文件" :根据文件名搜索对应的
libxxx-dev包并安装(如fatal error: opencv2/xfeatures2d.hpp需确保opencv_contrib路径正确)。 opencv_contrib模块下载失败 :若 CMake 配置时提示某些模块(如xfeatures2d)的文件缺失,可手动下载缺失文件放入对应目录,或从国内镜像源获取opencv_contrib。- Qt 相关错误 :若不需要 Qt,可在 CMake 中关闭
-D WITH_QT=OFF。
通过以上步骤,即可在 UOS 上成功编译并安装 OpenCV 4.10.0。
以下是将编译步骤整合为一个可执行的脚本文件(build_opencv_4.10.0.sh),方便在 UOS 上一键执行:
bash
#!/bin/bash
set -e # 遇到错误时退出脚本
# 定义版本和路径
OPENCV_VERSION="4.10.0"
WORK_DIR="$HOME/opencv_build"
OPENCV_DIR="$WORK_DIR/opencv-$OPENCV_VERSION"
CONTRIB_DIR="$WORK_DIR/opencv_contrib-$OPENCV_VERSION"
# 1. 更新系统并安装依赖
echo "=== 正在更新系统并安装依赖 ==="
sudo apt update && sudo apt upgrade -y
sudo apt install -y \
build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev \
libavformat-dev libswscale-dev libjpeg-dev libpng-dev libtiff-dev \
libjasper-dev libdc1394-22-dev libeigen3-dev libtheora-dev libvorbis-dev \
libxvidcore-dev libx264-dev sphinx-common libtbb-dev yasm \
libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libopenexr-dev \
libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev libv4l-dev \
libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools \
libatlas-base-dev gfortran libhdf5-dev libprotobuf-dev libleveldb-dev \
libsnappy-dev liblmdb-dev libgoogle-glog-dev libgflags-dev libprotobuf-dev \
protobuf-compiler liblapacke-dev
# 2. 创建工作目录并下载源码
echo "=== 正在下载OpenCV源码 ==="
mkdir -p "$WORK_DIR" && cd "$WORK_DIR"
# 下载主库和扩展模块
wget -c "https://github.com/opencv/opencv/archive/$OPENCV_VERSION.tar.gz" -O "opencv-$OPENCV_VERSION.tar.gz"
wget -c "https://github.com/opencv/opencv_contrib/archive/$OPENCV_VERSION.tar.gz" -O "opencv_contrib-$OPENCV_VERSION.tar.gz"
# 解压
tar -zxvf "opencv-$OPENCV_VERSION.tar.gz"
tar -zxvf "opencv_contrib-$OPENCV_VERSION.tar.gz"
# 3. 配置CMake
echo "=== 正在配置CMake ==="
mkdir -p "$OPENCV_DIR/build" && cd "$OPENCV_DIR/build"
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D OPENCV_EXTRA_MODULES_PATH="$CONTRIB_DIR/modules" \
-D BUILD_EXAMPLES=ON \
-D WITH_QT=ON \
-D WITH_OPENGL=ON \
-D WITH_V4L=ON \
-D WITH_FFMPEG=ON \
-D WITH_GSTREAMER=ON
-D BUILD_opencv_world=ON \ # 关键:启用opencv_world单库模式
..
# 4. 编译(使用全部CPU核心)
echo "=== 正在编译OpenCV ==="
make -j$(nproc)
# 5. 安装并更新动态链接库
echo "=== 正在安装OpenCV ==="
sudo make install
sudo ldconfig
# 6. 验证安装
echo "=== 验证安装结果 ==="
if pkg-config --modversion opencv4 &>/dev/null; then
echo "OpenCV $OPENCV_VERSION 编译安装成功!"
echo "版本信息:$(pkg-config --modversion opencv4)"
else
echo "安装失败,请检查错误日志。"
exit 1
fi
使用方法:
-
将上述内容保存为
build_opencv_4.10.0.sh -
赋予执行权限: bash
chmod +x build_opencv_4.10.0.sh -
运行脚本: bash
./build_opencv_4.10.0.sh
说明:
- 脚本会自动完成依赖安装、源码下载、配置、编译和安装全过程
- 如需调整编译选项(如关闭 Qt 支持、不编译扩展模块等),可修改脚本中的
cmake参数部分 - 编译过程可能耗时较长(取决于 CPU 性能),请耐心等待
- 若中途失败,脚本会自动退出并显示错误,可根据提示解决问题后重新运行