在 UOS(统信操作系统,基于 Debian/Ubuntu 体系)上编译 OpenCV 4.10.0
在 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; thenecho "OpenCV $OPENCV_VERSION 编译安装成功!"echo "版本信息:$(pkg-config --modversion opencv4)"
elseecho "安装失败,请检查错误日志。"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 性能),请耐心等待
- 若中途失败,脚本会自动退出并显示错误,可根据提示解决问题后重新运行