在 UOS(统信操作系统,基于 Debian/Ubuntu 体系)上编译 OpenCV 4.10.0

在 UOS(统信操作系统,基于 Debian/Ubuntu 体系)上编译 OpenCV 4.10.0,可按照以下步骤操作,确保依赖完整且编译过程顺利:

一、准备工作

  1. 更新系统包 首先确保系统包列表最新:

    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-essentialcmake 是编译基础工具;
    • libgtk2.0-dev 用于 GUI 窗口支持;
    • libavcodeclibavformat 等是视频编解码依赖;
    • libjpeglibpng 等是图像格式支持;
    • libqt5* 可选,用于 Qt 界面支持(如需可视化工具)。

三、下载 OpenCV 4.10.0 源码

  1. 从官网或 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)。

四、配置 CMake 编译选项

  1. 进入 OpenCV 源码目录,创建编译目录并配置:

    bash

    复制代码
    cd opencv-4.10.0
    mkdir build && cd build
  2. 执行 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_contribmodules目录(若不编译扩展模块可省略);
      • OPENCV_GENERATE_PKGCONFIG=ON:生成pkg-config文件(方便后续开发);
      • WITH_QT=ON:启用 Qt 支持(如需可视化);
      • 其他选项按需开启(如WITH_CUDA用于 GPU 加速,需额外安装 CUDA)。
  3. 检查配置结果:配置完成后,确认输出中无关键依赖缺失(如FFMPEGGTK等显示YES),否则需补充安装对应依赖。

五、编译与安装

  1. 编译(根据 CPU 核心数调整-j参数,加速编译):

    bash

    复制代码
    make -j$(nproc)  # $(nproc)自动获取CPU核心数
    • 若编译过程中出现错误,通常是依赖缺失或opencv_contrib模块问题,可根据报错信息补充依赖,或暂时移除opencv_contrib重新配置。
  2. 安装编译好的库:

    bash

    复制代码
    sudo make install
  3. 更新动态链接库缓存:

    bash

    复制代码
    sudo ldconfig

六、验证安装

  1. 检查版本:

    bash

    复制代码
    pkg-config --modversion opencv4  # 若输出4.10.0则成功
  2. 运行示例程序(可选):编译目录下的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

使用方法:

  1. 将上述内容保存为 build_opencv_4.10.0.sh

  2. 赋予执行权限: bash

    复制代码
    chmod +x build_opencv_4.10.0.sh
  3. 运行脚本: bash

    复制代码
    ./build_opencv_4.10.0.sh

说明:

  • 脚本会自动完成依赖安装、源码下载、配置、编译和安装全过程
  • 如需调整编译选项(如关闭 Qt 支持、不编译扩展模块等),可修改脚本中的cmake参数部分
  • 编译过程可能耗时较长(取决于 CPU 性能),请耐心等待
  • 若中途失败,脚本会自动退出并显示错误,可根据提示解决问题后重新运行
相关推荐
文火冰糖的硅基工坊5 小时前
[嵌入式系统-150]:智能机器人(具身智能)内部的嵌入式系统以及各自的功能、硬件架构、操作系统、软件架构
android·linux·算法·ubuntu·机器人·硬件架构
yuer55315 小时前
ubuntu22+postgresql18启动报错
ubuntu·postgresql·en_us.utf-8
susu10830189115 小时前
ubuntu 查看文件夹占了多大
linux·运维·ubuntu
柳鲲鹏6 小时前
多种方法:OpenCV中修改像素RGB值
前端·javascript·opencv·1024程序员节
yiyeyeshenlan7 小时前
WSL2调用摄像头并使用OpenCV
深度学习·ubuntu
序属秋秋秋8 小时前
《Linux系统编程之入门基础》【权限管理】
linux·运维·服务器·笔记·学习·ubuntu·xshell
weixin_5829851815 小时前
OpenCV cv::Mat.type() 以及类型数据转换
c++·opencv·计算机视觉
Antonio91519 小时前
【图像处理】图像形态学操作
图像处理·人工智能·opencv
前端初见21 小时前
快速上手TypeScript,TS速通
javascript·ubuntu·typescript