Linux 环境下编译安装 OpenCV 4.8.x

news2025/1/9 9:29:11

Linux 环境下编译安装 OpenCV 4.8.x 需要安装一系列依赖库。以下是详细的步骤说明,并附上每个依赖库的作用解释。


1. 环境准备

操作系统
  • 推荐使用 Ubuntu 20.04/22.04 或其他基于 Debian 的 Linux 发行版。
编译器
  • GCC 9 或更高版本(默认已安装)
  • CMake 3.5.1 或更高版本(用于配置和生成构建文件)
Python(可选)
  • Python 3.6 或更高版本
  • NumPy(用于 Python 绑定)

2. 安装依赖库

以下是 OpenCV 4.8.x 编译所需的依赖库及其作用:

2.1 基本编译工具
sudo apt update
sudo apt install build-essential cmake git pkg-config
  • build-essential:包含 GCC 编译器和基本的开发工具(如 make)。
  • cmake:用于配置和生成 OpenCV 的构建文件。
  • git:用于下载 OpenCV 源码。
  • pkg-config:用于管理编译时的库路径和链接选项。
2.2 图像编解码库
sudo apt install libjpeg-dev libpng-dev libtiff-dev libopenjp2-7-dev
  • libjpeg-dev:JPEG 图像格式支持。
  • libpng-dev:PNG 图像格式支持。
  • libtiff-dev:TIFF 图像格式支持。
  • libopenjp2-7-dev:JPEG 2000 图像格式支持。
2.3 视频编解码库
sudo apt install libavcodec-dev libavformat-dev libswscale-dev libavutil-dev
  • libavcodec-dev:视频编解码支持(FFmpeg 的一部分)。
  • libavformat-dev:视频容器格式支持(FFmpeg 的一部分)。
  • libswscale-dev:视频缩放和颜色空间转换支持(FFmpeg 的一部分)。
  • libavutil-dev:FFmpeg 的工具库,提供通用功能。
2.4 GUI 支持
sudo apt install libgtk-3-dev
  • libgtk-3-dev:GTK 图形界面库,用于 OpenCV 的窗口显示和用户交互。
2.5 线性代数库
sudo apt install libopenblas-dev libatlas-base-dev liblapack-dev gfortran
  • libopenblas-dev:高性能线性代数库,用于矩阵运算。
  • libatlas-base-dev:优化的线性代数库。
  • liblapack-dev:线性代数库,用于高级数学运算。
  • gfortran:Fortran 编译器,用于编译某些数学库。
2.6 多线程支持
sudo apt install libtbb2 libtbb-dev
  • libtbb-dev:Intel TBB(Threading Building Blocks)库,用于多线程并行计算。
2.7 GStreamer 支持
sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
  • libgstreamer1.0-dev:GStreamer 多媒体框架,用于视频流处理。
  • libgstreamer-plugins-base1.0-dev:GStreamer 基础插件。
2.8 Python 绑定支持(可选)
sudo apt install python3-dev python3-numpy
  • python3-dev:Python 3 开发头文件和库。
  • python3-numpy:NumPy 库,用于 Python 绑定的矩阵运算。

3. 下载 OpenCV 源码

# 下载 OpenCV 和 OpenCV Contrib 源码
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git

# 切换到 4.8.x 版本
cd opencv
git checkout 4.8.x
cd ../opencv_contrib
git checkout 4.8.x

4. 配置 CMake

# 创建构建目录
cd ../opencv
mkdir build
cd build

# 配置 CMake
cmake -D CMAKE_BUILD_TYPE=Release \
      -D CMAKE_INSTALL_PREFIX=/usr/local \
      -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
      -D OPENCV_ENABLE_NONFREE=ON \
      -D BUILD_opencv_python2=OFF \  # 禁用 Python 2 绑定
      -D BUILD_opencv_python3=OFF \  # 禁用 Python 3 绑定
      -D BUILD_opencv_python_bindings_generator=OFF \  # 禁用 Python 绑定生成器
可选配置
  • 启用 CUDA 支持
    -D WITH_CUDA=ON \
    -D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda \
    -D CUDA_ARCH_BIN="7.5" \  # 根据 GPU 架构设置
    -D WITH_CUDNN=ON \
    
  • 启用 OpenCL 支持
    -D WITH_OPENCL=ON \
    
  • 启用 VTK 支持
    -D WITH_VTK=ON \
    -D VTK_DIR=/path/to/vtk/build \  # 指定 VTK 安装路径
    
  • 启用 Python 支持
    -D BUILD_opencv_python3=ON \
    -D PYTHON3_EXECUTABLE=$(which python3) \
    -D PYTHON3_INCLUDE_DIR=$(python3 -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") \
    -D PYTHON3_LIBRARY=$(python3 -c "import distutils.sysconfig as sysconfig; print(sysconfig.get_config_var('LIBDIR'))") \
    -D PYTHON3_NUMPY_INCLUDE_DIRS=$(python3 -c "import numpy; print(numpy.get_include())") 
    

5. 编译和安装

# 编译(根据 CPU 核心数调整 -j 参数)
make -j$(nproc)

# 安装
sudo make install

6. 验证安装

C++ 验证
#include <opencv2/core.hpp>
#include <iostream>

int main() {
    std::cout << "OpenCV version: " << cv::getVersionString() << std::endl;
    return 0;
}

编译并运行:

g++ -o test_opencv test_opencv.cpp `pkg-config --cflags --libs opencv4`
./test_opencv
Python 验证
import cv2
print("OpenCV version:", cv2.__version__)

7. 常见问题

  1. 缺少依赖库
    • 根据 CMake 输出的错误信息安装缺失的依赖库。
  2. CUDA 支持问题
    • 确保已安装 CUDA Toolkit 并正确配置环境变量。
  3. Python 绑定问题
    • 确保 Python 和 NumPy 已正确安装,并在 CMake 中正确配置路径。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2273703.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

进阶篇-Day17:JAVA的日志、枚举、类加载器、反射等介绍】

目录 1、日志1.1 日志概念1.2 日志框架&#xff08;1&#xff09; Logback框架&#xff1a;&#xff08;2&#xff09;配置文件介绍&#xff1a; 2、枚举3、类加载器3.1 类加载器的介绍3.2 类加载器的加载过程&#xff1a;加载、链接、初始化3.3 类加载器的分类3.4 双亲委派模式…

GPU算力平台的应用之任意门:任意穿搭匹配模型的应用教程

大家好&#xff0c;今天给大家介绍一下&#xff1a;GPU算力平台的应用之任意门:任意穿搭匹配模型的应用教程。 文章目录 一、GPU算力平台概述人工智能智能发展为什么需要GPU算力平台 二、注册与登录账号注册流程 三、平台的应用之Anydoor应用启动器选择Anydoor的应用场景Anydoo…

阿里云代理商热销产品推荐

在数字化浪潮的推动下&#xff0c;企业对于云计算的依赖日益加深。阿里云&#xff0c;作为中国领先的云计算服务提供商&#xff0c;为企业提供了丰富多样的云产品和服务。本文将聚焦于阿里云代理商热销产品推荐&#xff0c;探讨其如何帮助企业高效利用云资源&#xff0c;加速数…

漏洞扫描工具

完整源码项目包获取→点击文章末尾名片&#xff01; 漏洞检测 该模块主要是对目标Web系统进行安全漏洞扫描&#xff0c;包括SQL注入、跨站脚本攻击&#xff08;XSS&#xff09;、弱密码、中间件漏洞。中间件漏洞扫描包括对Weblogic、Struts2、Tomcat 、Jboss、Drupal、Nexus的已…

SAP 销售确认收入的科目确定是由什么确定的?以及如何后台配置

财务同事问我&#xff0c;对销售单进行销售收入时确定收入科目是否是关联公司科目&#xff0c;我想当然的认为是由于客户主数据的贸易伙伴来决定的。后来查了一下配置&#xff0c;发现我搞错了。原来是通过客户的账号组来确定的。 然后我查了一下资料。分享如下&#xff1a; …

Kafka运维指南

一、Kafka架构概述 Kafka是一种分布式消息队列系统&#xff0c;采用发布 - 订阅模式&#xff0c;主要由生产者&#xff08;Producer&#xff09;、消费者&#xff08;Consumer&#xff09;、代理&#xff08;Broker&#xff09;和Zookeeper组成。 生产者&#xff1a;负责向Kaf…

Hadoop 实战笔记(一) -- Windows 安装 Hadoop 3.x

环境准备 安装 JAVA 1.8 Java环境搭建之JDK下载及安装下载 Hadoop 3.3.5 安装包 Hadoop 下载&#xff1a;https://archive.apache.org/dist/hadoop/common/ 一、JAVA JDK 环境检查 二、Hadoop(HDFS)环境搭建 1. 解压安装文件 hadoop-3.3.5.tar 2. 配置环境变量 HADOOP_HO…

Vscode辅助编码AI神器continue插件

案例效果 1、安装或者更新vscode 有些版本的vscode不支持continue,最好更新到最新版,也可以直接官网下载 https://code.visualstudio.com/Download 2、安装continue插件 搜索continue,还未安装的,右下脚有个Install,点击安装即可 <

rabbitmq——岁月云实战笔记

1 rabbitmq设计 生产者并不是直接将消息投递到queue,而是发送给exchange,由exchange根据type的规则来选定投递的queue,这样消息设计在生产者和消费者就实现解耦。 rabbitmq会给没有type预定义一些exchage,而实际我们却应该使用自己定义的。 1.1 用户注册设计 用户在…

江科大STM32入门——SPI通信笔记总结

wx&#xff1a;嵌入式工程师成长日记 &#xff08;一&#xff09;简介 四根通信线&#xff1a;SCK、MOSI、MISO、SS(片选信号) 同步&#xff08;同步通信是一种通信模式&#xff0c;在这种模式下&#xff0c;发送方和接收方在同一时刻进行数据传输。&#xff09;&#xff0c;全…

Tableau数据可视化与仪表盘搭建-可视化原则及BI仪表盘搭建

目录 可视化原则 BI仪表盘搭建 仪表盘搭建原则 明确仪表盘主题 仪表盘主题拆解 开发设计工作表 经营情况总览&#xff1a;突出显示的文字 经营数据详情&#xff1a;表格 每日营收数据&#xff1a;多轴折线图 每日流量数据&#xff1a;双轴组合图 新老客占比&#xf…

Chrome访问https页面显示ERR_CERT_INVALID,且无法跳过继续访问

在访问网页的时候&#xff0c;因为浏览器自身的安全设置问题&#xff0c; 对于https的网页访问会出现安全隐私的提示&#xff0c; 甚至无法访问对应的网站&#xff0c;尤其是chrome浏览器&#xff0c; 因此本文主要讲解如何设置chrome浏览器的设置&#xff0c;来解决该问题&…

微软发布AIOpsLab:一个开源的全面AI框架,用于AIOps代理

在当今这个云计算技术迅猛发展的时代&#xff0c;企业面临着前所未有的挑战与机遇。随着云基础设施的日益复杂化&#xff0c;它们成为了企业运营不可或缺的支柱。网站可靠性工程师&#xff08;Site Reliability Engineers&#xff0c;简称SRE&#xff09;和DevOps团队肩负着关键…

Pixel 6a手机提示无法连接移动网络,打电话失败!

1、开启VoLTE 2、如果没有&#xff0c;下载shizuku和PixelIMS应用。 shizuke Releases RikkaApps/Shizuku GitHub PixellMS Release v1.2.8 kyujin-cho/pixel-volte-patch GitHub 3、安装shizuke启动&#xff0c;开通root可以直接点击下面的启动&#xff0c;如果没有就…

【Arm】Arm 处理器的半主机(semihosting)机制

概览 通过 semihosting 机制&#xff0c;主机可以通过调试器使用目标计算机 IO 接口。 例如开发者的 PC 通过 J-Link 来使用 STM32 MCU 的输入输出。 这些功能的示例包括键盘输入、屏幕输出和硬盘 I/O。例如&#xff0c;可以使用此机制启用 C Library 中的函数&#xff0c;如…

Wireshark 学习笔记1

1.wireshark是什么 wireshark是一个可以进行数据包的捕获和分析的软件 2.基本使用过程 &#xff08;1&#xff09;选择合适的网卡 &#xff08;2&#xff09;开始捕获数据包 &#xff08;3&#xff09;过滤掉无用的数据包 &#xff08;4&#xff09;将捕获到的数据包保存为文件…

2025-01-06 Unity 使用 Tip2 —— Windows、Android、WebGL 打包记录

文章目录 1 Windows2 Android2.1 横版 / 竖版游戏2.2 API 最低版本2.3 目标帧率2.3.1 targetFrameRate2.3.2 vSyncCount2.3.3 Unity 默认设置以及推荐设置2.3.4 Unity 帧率托管 3 WebGL3.1 平台限制3.2 打包报错记录 13.3 打包报错记录 2 ​ 最近尝试将写的小游戏打包&#xff…

湘潭大学人机交互复习

老师没给题型也没划重点&#xff0c;随便看看复习了 什么是人机交互 人机交互&#xff08;Human-Computer Interaction&#xff0c;HCI&#xff09;是关于设计、评价和实现供人们使用的交互式计算机系统&#xff0c;并围绕相关的主要现象进行研究的学科。 人机交互研究内容 …

基于FPGA的出租车里程时间计费器

基于FPGA的出租车里程时间计费器 功能描述一、系统框图二、verilog代码里程增加模块时间增加模块计算价格模块上板视频演示 总结 功能描述 &#xff08;1&#xff09;&#xff1b;里程计费功能&#xff1a;3公里以内起步价8元&#xff0c;超过3公里后每公里2元&#xff0c;其中…

基于FPGA的洗衣机控制器电子定时器

文章目录 功能描述 一、框架 二、verilog代码 控制模块实现 三、视频上板效果展示 功能描述 &#xff08;1&#xff09;定时启动正转20秒暂停10秒反转20秒暂 停10秒&#xff0c;定时未到回到“正转20秒暂停10秒……”&#xff0c;定时到则停止; 若定时到&#xff0c;则停…