当前位置: 首页 > news >正文

在 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; thenecho "OpenCV $OPENCV_VERSION 编译安装成功!"echo "版本信息:$(pkg-config --modversion opencv4)"
elseecho "安装失败,请检查错误日志。"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 性能),请耐心等待
  • 若中途失败,脚本会自动退出并显示错误,可根据提示解决问题后重新运行
http://www.dtcms.com/a/511297.html

相关文章:

  • High-quality Surface Reconstruction using Gaussian Surfels 论文阅读
  • 百度地图多维检索:自然语言理解的深度搜索实践
  • 软件下载网站地址网站建设好了怎么进行推广
  • 牛客:NC16783拼数
  • UV技术:高效杀菌与精准固化的未来之光
  • PB级数据洪流下的抉择:从大数据架构师视角,深度解析时序数据库选型与性能优化(聚焦Apache IoTDB)
  • 时序数据库TDengine用法
  • 重庆市建设网站公司经济师考试时间2023报名时间
  • 第3章,[标签 Win32] :窗口类06,实例句柄与图标光标
  • 带你了解STM32:PWR电源控制
  • React Hooks完全指南
  • 多线程之ThreadLocal
  • 如何修改root密码
  • (三)React技术核心思想——组件化编程
  • 国外唯美flash个人网站欣赏建设网银
  • 【NVIDIA-H200-3】3节点all-reduce-三节点扩展的性能边界:NVIDIA H200 24 卡集群 all-reduce 通信效率深度剖析
  • D026 vue3+django 论文知识图谱推荐可视化系统 | vue3+vite前端|neo4j 图数据库
  • 桃浦做网站常德经开区网站官网
  • ODOO数据文件(XML、CSV、SQL)是如何转换并加载到 Odoo 数据库
  • ArcGIS JSAPI 学习教程 - 要素图层(FeatureLayer)分类、分组设置可视化样式(ClassBreaksRenderer)
  • 10天!前端用coze,后端用Trae IDE+Claude Code从0开始构建到平台上线
  • [JavaEE初阶] 传输层协议---UDP 相关笔记
  • 考研408《操作系统》复习笔记,第二章《2.3 进程调度》
  • 网站开发流程有哪几个阶段网站关键词多少个合适
  • GitHub 热榜项目 - 日榜(2025-10-21)
  • 如何提高中药饮片批发业务的市场竞争力?
  • 门户网站建设关键点网站开发编程入门学习
  • 多路由隔离:构建模块化Agent工具服务器
  • [云计算] Classic Network-->VPC: 用SDN和Overlay实现隔离
  • linux shell编程实战 04 条件判断与流程控制