Linux 环境下编译安装 OpenCV 4.8.x
在 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. 常见问题
- 缺少依赖库:
- 根据 CMake 输出的错误信息安装缺失的依赖库。
- CUDA 支持问题:
- 确保已安装 CUDA Toolkit 并正确配置环境变量。
- Python 绑定问题:
- 确保 Python 和 NumPy 已正确安装,并在 CMake 中正确配置路径。
相关文章:
Linux 环境下编译安装 OpenCV 4.8.x
在 Linux 环境下编译安装 OpenCV 4.8.x 需要安装一系列依赖库。以下是详细的步骤说明,并附上每个依赖库的作用解释。 1. 环境准备 操作系统 推荐使用 Ubuntu 20.04/22.04 或其他基于 Debian 的 Linux 发行版。 编译器 GCC 9 或更高版本(默认已安装&a…...
phpenc加密程序源码
免费扩展加密程序,类似于sg11加密,支持单个PHP(免费)文件以及批量PHP文件(ZIP压缩包格式)源码加密的保护平台,加密后的源码文件保持原有代码结构,可以跨平台运行,可以运行…...
学英语学Elasticsearch:04 Elastic integrations 工具箱实现对第三方数据源的采集、存储、可视化,开箱即用
📢📢📢: 先看关键单词,再看英文,最后看中文总结,再回头看一遍英文原文,效果更佳!! 关键词 ingestion 摄取 /ɪnˈdʒɛstʃən/ observability 可观察性 …...
2024.10.12 校招 实习 内推 面经
🛰️ :neituijunsir 交* 流*裙 ,内推/实习/校招汇总表格 1、校招 | 中车电动2025届校园招聘正式启动 校招 | 中车电动2025届校园招聘正式启动 2、校招 | 莱斯信息2025届校园招聘 校招 | 莱斯信息2025届校园招聘 3、招聘 | 中电熊猫2025…...
ios越狱脚本巨魔商店安装教程
使用爱思助手安装 安装爱思助手:在电脑上安装 iTunes 和爱思助手,并使用 Apple ID 登录2。 IPA 签名:打开爱思助手,选择工具箱中的 IPA 签名。点击添加 IPA 文件,选择下载的 TrollInstallerX.ipa 文件。选择使用 Apple…...
浅谈容灾技术方案详解
一、什么是容灾? 容灾指的是,在异地搭建一套或多套和主生产系统一样的IT系统,用于应对在系统因发生意外(自然灾害、人为灾害、设备系统故障等)造成业务影响的情况,达到尽量让生产业务损失最小的目的。 二…...
时序数据库InfluxDB—介绍与性能测试
目录 一、简述 二、主要特点 三、基本概念 1、主要概念 2、保留策略 3、连续查询 4、存储引擎—TSM Tree 5、存储目录 四、基本操作 1、Java-API操作 五、项目中的应用 六、单节点的硬件配置 七、性能测试 1、测试环境 2、测试程序 3、写入测试 4、查询测试 一…...
Python的循环
Python的循环 Python的循环有两种,分别是for…in循环和while循环。 for…in 循环 假设我们要循环输出一个列表里的元素: names [张三,李四,王五] for name in names:print(name)执行这段代码后,会依次打印names的每一个元素:…...
【机器学习】聚类评价指标之福尔克斯–马洛斯指数(Fowlkes–Mallows Index, FMI)
福尔克斯–马洛斯指数(Fowlkes–Mallows Index, FMI)是一种用于评估聚类结果与实际标签之间一致性的指标。FMI 值可以用于衡量聚类的准确性,特别是在有真值标签的监督评估场景中。 计算公式 FMI 的计算基于以下公式: 其中&#…...
分享一次面试经历
今天不只是分享面经,还分享一下主人公的整个面试经历,看看你是否会有相同的思路或者不同的见解,可以在评论区讨论一下: 问在项目里做了什么技术贡献。实施过程中,遇到哪些困难,怎么去思考解决的࿰…...
网络攻击行为可视化分析系统【数据分析 + 可视化】
一、系统背景 随着信息技术的快速发展,网络已成为现代社会不可或缺的一部分。然而,与此同时,网络攻击手段也日益多样化和复杂化,给企业和个人的信息安全带来了极大的威胁。传统的网络攻击分析方法往往依赖于人工分析和处理大量的…...
Qt 智能指针
Qt 智能指针 文章目录 Qt 智能指针QScopedPointer1. 自动删除对象2. 转移所有权3. 管理私有数据 QSharedPointer关键特性注意事项 QWeakPointer注意事项 QPointer QScopedPointer QScopedPointer 是 Qt 提供的一个智能指针,主要用于简化资源管理,防止内…...
CODESYS MODBUS TCP通信(禾川Q1 PLC作为MODBUS TCP从站)
禾川Q1 PLC MODBUS TCP 通信(PLC作为MODBUS TCP通信主站) 禾川Q1 PLC MODBUS TCP通信(CODESYS平台完整配置+代码)-CSDN博客文章浏览阅读28次。MATLAB和S7-1200PLC水箱液位高度PID控制联合仿真(MODBUSTCP通信)_将matlab仿真导入plc-CSDN博客文章浏览阅读722次。本文详细介绍了如…...
10.STM32F407ZGT6-内部温度传感器
参考: 1.正点原子 前言: 本笔记的主要目的和意义就是,再次练习ADC的使用。 32.1 内部温度传感器简介 STM32F407 有一个内部的温度传感器,可以用来测量 CPU 及周围的温度(TA)。对于STM32F407 系列来说,该温度传感器在…...
运维安全中心(堡垒机)
阿里云运维安全中心(Alibaba Cloud Operation and Maintenance Security, OMS,通常也称为“堡垒机”)是一款针对云上运维管理的安全解决方案。它专注于加强云环境中运维过程的安全性,确保对关键云资源和服务的访问可控、可审计&am…...
Linux OOM | Early OOM | 进程监视
注: 本文为 “Linux OOM” 相关文章合辑。 Linux OOM 终结者 译者:花名有孚 | 2015-07-21 08:47 现在是早晨 6 点钟。已经醒来的我正在总结到底是什么事情使得我的起床闹铃提前了这么多。我们的监控系统显示,Plumbr 服务出故障了。 现在我…...
【2024年华为OD机试】(A卷,100分)- 等和子数组最小和(Java JS PythonC/C++)
一、问题描述 题目描述 给定一个数组nums,将元素分为若干个组,使得每组和相等,求出满足条件的所有分组中,组内元素和的最小值。 输入描述 第一行输入 m 接着输入m个数,表示此数组nums 数据范围:1<m&…...
NFS服务
nfs文件系统 NFS:NetworkFileSystem网络文件系统,基于内核的文件系统。 服务安装 不固定端口启动,会注册到rpcbind(固定端口)服务上, 局域网适用[rootvm ~]# yum -y install nfs-utils # 依赖安装rpcbind [ro…...
RabbitMQ 交换机、队列和路由键的命名规范
在 RabbitMQ 中,使用 Topic Exchange 模式时,交换机、队列和路由键的命名规范是非常重要的,尤其是在多环境和多微服务的场景中。合理的命名规范可以提高消息系统的可维护性、可扩展性以及可读性。以下是一些关于 Topic Exchange 模式中交换机…...
腾讯云AI代码助手编程挑战赛-刑说
作品简介 鉴于当代普法力度不够大,这个刑说可以帮助大家更好的普及法律知识 技术架构 采用了全后端分离的架构,前端使用Vue.js,腾讯云的AI服务处理自然语言理解与生成。 实现过程 开发环境、开发流程 系统:win11 开发工具&…...
iptables实战指南:从链表关系到规则配置的完整解析
1. iptables基础概念与核心组件 第一次接触iptables时,我盯着那些复杂的规则配置看了整整一个下午。后来才发现,理解iptables的关键在于掌握它的"四表五链"架构。简单来说,iptables就像是一个多层安检系统,数据包要经过…...
Mermaid Live Editor:代码即画布的思维可视化革命
Mermaid Live Editor:代码即画布的思维可视化革命 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/mermaid-live-editor …...
DFRDisplayKm 实用指南:Apple Touch Bar Windows支持常见问题全解析
DFRDisplayKm 实用指南:Apple Touch Bar Windows支持常见问题全解析 【免费下载链接】DFRDisplayKm Windows infrastructure support for Apple DFR (Touch Bar) 项目地址: https://gitcode.com/gh_mirrors/df/DFRDisplayKm DFRDisplayKm 是一款专为 Windows…...
C语言浪漫玫瑰代码:用编程传递爱意的创意实践
1. 用代码绽放爱的玫瑰:程序员专属浪漫指南 当传统玫瑰花束遇上代码,会碰撞出怎样的火花?作为一名写过无数行代码的老程序员,我发现用C语言绘制玫瑰花不仅能展现技术实力,更能传递独特的情感温度。记得第一次给女友展…...
Claude Code 愚人节彩蛋:终端里的虚拟宠物伴侣
Claude Code 愚人节彩蛋:终端里的虚拟宠物伴侣 在 AI 编程助手的深处,藏着一个等待孵化的秘密——18 种 ASCII 精灵、5 级稀有度、完整的 RPG 属性系统。这可能是你见过的最可爱的命令行宠物。 意外的发现 在逆向分析 Claude Code 源码的过程中…...
大数据领域 OLAP 技术的发展趋势展望
大数据领域OLAP技术的发展趋势展望 关键词:OLAP、大数据分析、实时决策、云原生、AI融合 摘要:本文从超市老板的"销售密码"故事出发,用通俗易懂的语言拆解OLAP(在线分析处理)技术的核心逻辑,结合当前大数据技术演进趋势,深入探讨OLAP在实时化、云原生化、AI融…...
Tetrazine-NHBoc,cas:1380500-93-5,四嗪-氨基叔丁酯的结构特点
Tetrazine-NHBoc(四嗪-氨基叔丁酯)是一种结合了四嗪基团和N-叔丁氧羰基(NHBoc)保护基的有机化合物,以下是对其的详细介绍:一、基本信息中文名称:四嗪-氨基叔丁酯英文名称:Tetrazine-…...
python复习--进程相关--is_alive()
一、Process.is_alive() is_alive() 是 multiprocessing.Process 提供的方法,用于 判断进程当前是否仍在运行。 process.is_alive()返回值: True → 进程正在运行False → 进程未启动 或 已经结束 二、进程生命周期与 is_alive() 一个 Process 对象…...
Anything to RealCharacters效果评测:与Stable Diffusion ControlNet写实方案对比
Anything to RealCharacters效果评测:与Stable Diffusion ControlNet写实方案对比 1. 项目概述 Anything to RealCharacters是一款专为RTX 4090显卡优化的2.5D转真人图像转换系统。这个工具基于通义千问Qwen-Image-Edit-2511图像编辑底座,集成了专门的…...
Z-Image Atelier 生成动态效果预览:通过序列图像模拟简单动画过程
Z-Image Atelier 生成动态效果预览:通过序列图像模拟简单动画过程 最近在玩一个挺有意思的AI图像工具,叫Z-Image Atelier。它最吸引我的地方,不是生成单张多么精美的图片,而是它能帮你“脑补”出一段动态过程。简单来说ÿ…...
