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

OpenCV进阶操作:图像金字塔

文章目录

  • 前言
  • 一、图像金字塔
    • 1、什么是图像金字塔
    • 2、金字塔类型
      • 1) 高斯金字塔 (Gaussian Pyramid)
      • 2)拉普拉斯金字塔 (Laplacian Pyramid)
    • 3、图像金字塔的作用
  • 二、图像金字塔中的操作
    • 1、向下采样
      • 步骤
    • 2、向上采样
      • 步骤
    • 3、拉普拉斯金字塔
    • 4、结论
  • 三、代码实现
    • 1、高斯金字塔向下采样
    • 2、高斯金字塔向上采样
    • 3、向下采样再向上采样
    • 4、拉普拉斯金字塔
  • 总结


前言

在计算机视觉领域,图像金字塔是一种重要的多尺度表示方法。通过构建图像金字塔,我们可以高效地处理不同分辨率下的图像特征。OpenCV作为最流行的计算机视觉库,提供了便捷的图像金字塔实现方法。本文将深入解析图像金字塔的原理,并通过Python代码演示其实际应用


一、图像金字塔

1、什么是图像金字塔

图像金字塔是通过对原始图像进行多尺度**下采样(缩小)上采样(放大)**得到的图像集合。其名称来源于金字塔状的分层结构,每一层都是对前一层分辨率按比例缩放的结果。这种结构可以帮助我们在不同尺度下分析图像特征,常用于目标检测、图像融合等任务。
在这里插入图片描述

2、金字塔类型

1) 高斯金字塔 (Gaussian Pyramid)

  • 原理:通过不断进行高斯模糊和下采样生成
  • 向下采样(缩小):

  • 应用高斯滤波器(5×5卷积核)

  • 删除偶数行和列(分辨率减半)

  • 向上采样(放大):

  • 将图像尺寸扩大两倍(新增像素初始化为0)

  • 应用高斯滤波器进行近似插值

2)拉普拉斯金字塔 (Laplacian Pyramid)

  • 原理:通过高斯金字塔不同层级的差值构建,用于图像重建

  • 公式:L_i = G_i - PyrUp(G_{i+1})

  • 存储的是不同尺度下的细节信息

3、图像金字塔的作用

  • 特征点提取

图像金字塔允许在不同尺度下检测特征点,提高特征点检测的尺度不变性。

  • 模板匹配

图像金字塔帮助处理不同尺度的模板匹配问题,提高匹配的准确性。

  • 光流跟踪

通过在不同尺度层中估计光流,图像金字塔帮助处理大范围的运动,提高光流估计的精度。

二、图像金字塔中的操作

1、向下采样

向金字塔顶部移动时,图像的尺寸和分辨率都不断地降低。通常情况下,每向上移动一级,图像的宽和高都降低为原来的1/2。

步骤

  1. 高斯滤波(减少高频噪声)
  2. 删除其偶数行和偶数列(所以所用图像一般高宽都是偶数)
  3. OpenCV函数cv2.pyrDown()
    在这里插入图片描述

2、向上采样

通常将图像的宽度和高度都变为原来的2倍。这意味着,向上采样的结果图像的大小是原始图像的4倍。因此,要在结果图像中补充大量的像素点。对新生成的像素点进行赋值的行为,称为插值。

步骤

  1. 插值
  2. 高斯滤波(减少由于插值产生的人工边界和不自然的过渡)
  3. OpenCV函数cv2.pyrUp()
    在这里插入图片描述

3、拉普拉斯金字塔

为了在向上采样是能够恢复具有较高分辨率的原始图像,就要获取在采样过程中所丢失的信息,这些丢失的信息就构
成了拉普拉斯金字塔。也是拉普拉斯金字塔是有向下采样时丢失的信息构成。
在这里插入图片描述
在这里插入图片描述

4、结论

通过以上分析可知,向上采样和向下采样是相反的两种操作。但是,由于向下采样会丢失像素值,所以这两种操作并不
是可逆的。也就是说,对一幅图像先向上采样、再向下采样,是无法恢复其原始状态的;同样,对一幅图像先向下采样、
再向上采样也无法恢复到原始状态。

三、代码实现

  • 关键API说明

  • cv2.pyrDown(src):向下采样

  • cv2.pyrUp(src):向上采样

  • 注意:pyrUp不是pyrDown的完美逆运算,会丢失部分信息。

1、高斯金字塔向下采样

使用cv2.pyrDown()函数实现向下采样

import cv2
import numpy as np
from matplotlib import pyplot as plt
def cv_show(name,image):cv2.imshow(name,image)cv2.waitKey(0)
'''------------高斯金字塔操作中的向下采样-------------'''face = cv2.imread('pyy.jpg',cv2.IMREAD_GRAYSCALE)#G0
cv_show('face',face)
face_down_1 = cv2.pyrDown(face)#下采样G1
cv_show('down_1',face_down_1)
face_down_2 = cv2.pyrDown(face_down_1)
cv_show('down_2',face_down_2)

可以看出逐层递减的效果非常明显
在这里插入图片描述

2、高斯金字塔向上采样


```python
import cv2  # opencv读取的格式是BGR2# 高斯金字塔操作中的向上采样
# dst = cv2.pyrUp(src [,dst, dstsize [, borderType] ])
# dst:目标图像
# #src:原始图像
# dstsize:目标图像的大小
face = cv2.imread('face.jpg')  # G0
face = cv2.resize(face, (400, 400))
cv2.imshow('face', face)
cv2.waitKey(0)
face_up_1 = cv2.pyrUp(face)
cv2.imshow('face_up_1', face_up_1)  # G1
cv2.waitKey(0)
face_up_2 = cv2.pyrUp(face_up_1)
cv2.imshow('face_up_2', face_up_2)  # G2
cv2.waitKey(0)
cv2.destroyAllWindows()

向上采样之后的图像宽高逐层变成2倍

在这里插入图片描述

3、向下采样再向上采样

  • 对下采样后图像进行上采样,图像变模糊,无法复原
  • 对上采样后图像进行下采样,图像变模糊,无法复原
face_down_1_up = cv2.pyrUp(face_down_1)  # 下采样G1
face_up_1_down = cv2.pyrDown(face_up_1)  # 上采样G1
cv2.imshow('yuantu', face)
cv2.imshow('down_1_up', face_down_1_up)
cv2.imshow('up_1_down', face_up_1_down)
cv2.waitKey(0)
cv2.destroyAllWindows()
  • 处理后的图像与原图相比变得模糊
    在这里插入图片描述

4、拉普拉斯金字塔

L0 = face - face_down_1_up
L1 = face_down_1 - face_down_2_upfuyuan = face_down_1_up + L0
cv_show('L0',L0)
cv_show('l1',L1)
cv_show('fuyuan',fuyuan)
  • 可以看到拉普拉斯金字塔的复原效果还是不错的
  • 我这里使用的是彩色图片,所以拉普拉斯图像是彩色的
  • 如果使用的图片是灰度图,那么就是黑白的
    在这里插入图片描述

总结

图像金字塔为多尺度图像处理提供了高效解决方案。通过OpenCV的简单API,我们可以轻松实现:

  • 创建不同分辨率的图像层级

  • 提取多尺度特征

  • 实现自然的图像融合效果

实际开发中,金字塔技术常与特征检测算法(如SIFT、ORB)结合使用。读者可以尝试调整金字塔层数,或结合边缘检测算法探索更多应用场景

相关文章:

OpenCV进阶操作:图像金字塔

文章目录 前言一、图像金字塔1、什么是图像金字塔2、金字塔类型1) 高斯金字塔 (Gaussian Pyramid)2)拉普拉斯金字塔 (Laplacian Pyramid) 3、图像金字塔的作用 二、图像金字塔中的操作1、向下采样步骤 2、向上采样步骤 3、拉普拉斯金字塔4、结论 三、代码…...

Rust游戏开发全栈指南:从理论到实践的革新之路

一、Rust游戏开发生态全景 1.1 核心引擎框架 Rust游戏生态已形成多层级工具链,覆盖从轻量级2D到3A级项目的开发需求: Bevy:采用ECS架构的模块化引擎,提供优雅的API设计和活跃社区支持,支持实时热重载和跨平台部署Fy…...

[GXYCTF2019]Ping Ping Ping

解题步骤 1、先使用 内敛执行 查看当前的php文件 执行 命令执行 发现空格被过滤 ?ip127.0.0.1$IFS|$IFSwhomi 还有一个点就是这个 执行的命令是不能进行拼接的 可能就是被过滤了 | 所以我们使用 ; 进行绕过一下 空格过滤代替 $IFS ${IFS} ${IFS}$9 //这里$1到$9都可以 $IFS$1…...

马哥教育Linux云计算运维课程

课程大小:19.1G 课程下载:https://download.csdn.net/download/m0_66047725/90640128 更多资源下载:关注我 你是否找了很多资料看了很多视频聊了很多群友,却发现自己技术仍然原地踏步?本教程联合BAT一线导师倾囊相授…...

科技打头阵,创新赢未来——中科视界携千眼狼超高速摄像机亮相第三届科交会

2025年4月26日,合肥,第三届中国(安徽)科技创新成果转化交易会国际合作板块展区,中科视界及其旗下品牌“千眼狼”高速摄像机成为展会焦点。作为国内科学仪器的领军企业,中科视界以“科技打头阵,创…...

【Flutter】Unity 三端封装方案:Android / iOS / Web

关联文档:【方案分享】Flutter Unity 跨平台三维渲染架构设计全解:插件封装、通信机制与热更新机制—— 支持 Android/iOS/Web 的 3D 内容嵌入与远程资源管理,助力 XR 项目落地 —— 支持 Android/iOS/Web 的 3D 内容嵌入与远程资源管理&…...

高能效计算:破解算力增长与能源约束的科技密码

引言 在人工智能和大模型技术迅猛发展的今天,全球算力需求正以每年50%的速度激增[3]。然而,传统计算范式已逼近物理极限——国际能源署预测,到2030年数据中心的全球电力消耗占比可能突破3%[3]。面对这场"算力革命"与"能源危机…...

【质量管理】TRIZ(萃智)的工程系统进化法则

在文章【质量管理】现代TRIZ(萃智)理论概述-CSDN博客 我们谈到到现代TRIZ的理论、TRIZ与传统创新的差异等。在文章中我们有说到TRIZ的创始人阿奇舒勒发现其实技术的进化是有规律可循的。 那到底技术进步有什么规律呢? 技术进化发展趋势和路径…...

FastAPI系列07:“请求-响应”过程高阶技巧

“请求-响应”过程高阶技巧 1、自定义 Request自定义 Request的用途如何自定义 Request 2、自定义APIRouteAPIRoute的用途自定义 APIRoute的用途如何自定义 APIRoute 3、使用BackgroundTasks(后台任务)BackgroundTasks的用途如何使用BackgroundTasksBack…...

游戏服务器不加防护能活多久?

游戏服务器若不加防护,其存活时间受多种因素影响,但通常面临极高的安全风险,可能在数小时至数天内因攻击或漏洞利用而崩溃。以下是具体分析: 1. DDoS攻击与勒索风险 未加防护的服务器极易成为黑客攻击目标,尤其是DDoS…...

Embedding入门概述

概述 Embedding,嵌入,一种将离散的符号数据(如单词、句子、图像等)映射到连续的向量空间中的技术,这些向量能够捕捉数据之间的语义、结构等关系。就是把原本难以直接处理的符号数据,转换成计算机更容易理解…...

革新桌面自动化:微软UFO²操作系统深度解析与未来展望

一、系统架构:多智能体协同的OS级创新 微软UFO(Unified Framework for Operations)是首个深度集成于Windows底层的多智能体操作系统,其核心架构由HostAgent控制中枢与模块化AppAgent执行单元构成。 ​HostAgent作为系统级调度器…...

【Java】分布式事务解决方案

分布式事务是指在分布式系统中,为了保证多个节点上的操作要么全部成功提交,要么全部失败回滚,所采取的一系列技术手段和协议。 CAP理论 在一个分布式系统中以下三个基本属性无法被同时满足: C(一致性):一致性是指写…...

es数据导出

有大数据量导出的需求 整体思路:分页查询es,一页查询2000条,下一页查询的截止时间取上一页最后一条记录的创建时间(因为分页是按照创建时间逆序排列的),组装最后导出的list,利用EasyExcel导出到…...

chrony服务器(2)

安装与配置 [rootserver ~]# systemctl status ntp # 查看ntp状态 安装 # 默认已安装,若需要安装则可执行: [rootserver ~]# yum install chrony -y [rootserver ~]# systemctl start chronyd [rootserver ~]# systemctl enable chronyd Chrony配置文…...

C++入门小馆: STL 之queue和stack

嘿,各位技术潮人!好久不见甚是想念。生活就像一场奇妙冒险,而编程就是那把超酷的万能钥匙。此刻,阳光洒在键盘上,灵感在指尖跳跃,让我们抛开一切束缚,给平淡日子加点料,注入满满的pa…...

从零搭建云原生后端系统 —— 一次真实项目实践分享

一、引言:为什么选择云原生技术打造后端? 在当今数字化加速的时代,业务需求变化频繁,应用需要快速开发、快速上线、快速迭代。传统单体应用后端架构在灵活性、扩展性和稳定性方面越来越难以满足需求。 而云原生(Clou…...

东田数码科技前端面经

东田数码科技有限公司前端面经 一个月三次面试,也是逐渐积攒了许多经验,也有遇到面试官问到的重复的问题,也有一些我不懂的问题,以下是4.27东田前端面经,希望给大家做参考。 1-自我介绍 我是ac鸽,就读与…...

【音视频】SDL窗口显示

SDL视频显示函数简介 SDL_Init(): 初始化SDL系统SDL_CreateWindow():创建窗口SDL_WindowSDL_CreateRenderer():创建渲染器SDL_RendererSDL_CreateTexture():创建纹理SDL_TextureSDL_UpdateTexture(): 设置纹理的数据S…...

小球在摆线上下落的物理过程MATLAB代码

‌物理建模‌: 使用摆线参数方程定义轨迹:x r(θ - sinθ), y r(1 - cosθ)通过微分方程求解角度θ随时间变化关系,考虑能量守恒定律计算实时速度分量和切向加速度 ‌可视化特性‌: 灰色虚线显示完整摆线轨迹红色小球实时显示当…...

【设计模式】享元模式

享元模式属于结构型设计模式 核心思想是通过共享技术,实现相似对象的高效复用。用 1%的资源支撑100%的需求——通过对象状态的分离与共享,用最小内存支持海量对象 内部状态:对象中不变的部分共享 外部状态:对象中变化的部分非共享…...

R中实现数值求导的包numDeriv

介绍 numDeriv 是一个用于数值求导的 R 包,它提供了计算函数导数的简单方法,支持一阶导数和高阶导数的计算。 计算一阶导数 grad(func, x, method"Richardson", sideNULL, eps1e-4, method.argslist(), ...) 参数: func&#x…...

常用的多传感器数据融合方法

1. 概述 根据具体需求(实时性、计算资源、噪声特性)选择合适的方法,实际应用中常结合多种方法(如UKF与神经网络结合)。 传统方法 (KF/EKF/UKF/PF)依赖数学模型,适合动态系统&#…...

[Lc_week] 447 | 155 | Q1 | hash | pair {}调用

447_Q1 题解 class Solution {typedef pair<int,int> PII;// 自定义哈希函数struct HashPII {size_t operator()(const PII& p) const {return hash<int>()(p.first) ^ (hash<int>()(p.second) << 1);}};public:int countCoveredBuildings(int n,…...

HTML5 新特性详解:语义化标签、表单与音视频嵌入

前言 HTML5作为当前Web开发的核心技术&#xff0c;为开发者提供了更强大、更语义化的工具集。本文将深入探讨HTML5的三大核心特性&#xff1a;语义化标签、增强的表单功能以及原生的音视频支持&#xff0c;帮助开发者构建更现代化、更易维护的网页应用。 一、HTML5语义化标签…...

关于 React Fiber 架构、Hooks 原理

下面将详细介绍你提到的关于 React Fiber 架构、Hooks 原理等相关知识点&#xff1a; React Fiber 架构概述 1. 架构演变 在 React 16 版本之前&#xff0c;采用的是栈调和&#xff08;Stack Reconciler&#xff09;&#xff0c;流程是 JSX 经过 render 函数转换为虚拟 DOM&…...

音视频之H.265/HEVC熵编码

H.265/HEVC系列文章&#xff1a; 1、音视频之H.265/HEVC编码框架及编码视频格式 2、音视频之H.265码流分析及解析 3、音视频之H.265/HEVC预测编码 4、音视频之H.265/HEVC变换编码 5、音视频之H.265/HEVC量化 6、音视频之H.265/HEVC环路后处理 7、音视频之H.265/HEVC熵编…...

【视频生成模型】通义万相Wan2.1模型本地部署和LoRA微调

目录 1 简介2 本地部署2.1 配置环境2.2 下载模型 3 文生视频3.1 运行命令3.2 生成结果 4 图生视频4.1 运行命令4.2 生成结果 5 首尾帧生成视频5.1 运行命令5.2 生成结果 6 提示词扩展7 LoRA微调 1 简介 2 本地部署 2.1 配置环境 将Wan2.1工程克隆到本地&#xff1a; git cl…...

Java高频面试之并发编程-09

hello啊&#xff0c;各位观众姥爷们&#xff01;&#xff01;&#xff01;本baby今天来报道了&#xff01;哈哈哈哈哈嗝&#x1f436; 面试官&#xff1a;详细说说ThreadLocal ThreadLocal 是 Java 中用于实现线程本地变量的工具类&#xff0c;主要解决多线程环境下共享变量的…...

[Vulfocus解题系列]Apache HugeGraph JWT Token硬编码导致权限绕过(CVE-2024-43441)

[Vulfocus解题系列]Apache HugeGraph JWT Token硬编码导致权限绕过&#xff08;CVE-2024-43441&#xff09; Apache HugeGraph 是一款快速、高度可扩展的图数据库。它提供了完整的图数据库功能&#xff0c;具有出色的性能和企业级的可靠性。 Apache HugeGraph 存在一个 JWT t…...

MySQL最新安装、连接、卸载教程(Windows下)

文章目录 MySQL最新安装、连接、卸载教程&#xff08;Windows下&#xff09;1.MySQL安装2.MySQL连接2.1 命令行连接2.2 图形化连接&#xff08;推荐&#xff09; 3.MySQL卸载参考 MySQL最新安装、连接、卸载教程&#xff08;Windows下&#xff09; 1.MySQL安装 MySQL 一共可以…...

Scala 函数柯里化及闭包

一、柯里化 1.1 定义 柯里化是将一个接受多个参数的函数转换为一系列接受单个参数的函数的过程。每个函数返回一个新函数&#xff0c;直到所有参数都被收集完毕&#xff0c;最终返回结果。 1.2 示例 非柯里化函数&#xff08;普通多参数函数&#xff09; def add(a: Int, b…...

EasyRTC嵌入式音视频通信SDK助力视频客服,开启智能服务新时代

一、背景 在数字化服务浪潮下&#xff0c;客户对服务体验的要求日益提升&#xff0c;传统语音及文字客服在复杂业务沟通、可视化指导等场景下渐显不足。视频客服虽成为企业服务升级的关键方向&#xff0c;但普遍面临音视频延迟高、画质模糊、多端适配难、功能扩展性差等问题&a…...

OceanBase数据库-学习笔记1-概论

多租户概念 集群和分布式 随着互联网、物联网和大数据技术的发展&#xff0c;数据量呈指数级增长&#xff0c;单机数据库难以存储和处理如此庞大的数据。现代应用通常需要支持大量用户同时访问&#xff0c;单机数据库在高并发场景下容易成为性能瓶颈。单点故障是单机数据库的…...

Android 理清 Gradle、AGP、Groovy 和构建文件之间的关系

在 Android 开发中&#xff0c;我们常常会接触到一系列看似相近却各有分工的名词&#xff0c;比如&#xff1a;Gradle、Groovy、AGP、gradle-wrapper.properties、build.gradle、settings.gradle 等等。 它们彼此之间到底是什么关系&#xff1f;各自又承担了什么角色&#xff1…...

ubuntu 安装ollama后,如何让外网访问?

官网下载linux版本&#xff1a;https://ollama.com/download/linux 1、一键安装和运行 curl -fsSL https://ollama.com/install.sh | sh 2、下载和启动deepseek-r1大模型 ollama run deepseek-r1 这种方式的ollama是systemd形式的服务&#xff0c;会随即启动。默认开启了 …...

安卓的Launcher 在哪个环节进行启动

安卓Launcher在系统启动过程中的关键环节启动&#xff0c;具体如下&#xff1a; 内核启动&#xff1a;安卓设备开机后&#xff0c;首先由引导加载程序启动Linux内核。内核负责初始化硬件设备、建立内存管理机制、启动系统进程等基础工作&#xff0c;为整个系统的运行提供底层支…...

【银河麒麟高级服务器操作系统】在VMware虚拟机情况下出现软锁处理过程

系统环境及配置 系统环境 物理机/虚拟机/云/容器 VMware虚拟机&#xff0c;宿主机型号是YK SR750 网络环境 外网/私有网络/无网络 私有网络 硬件环境 机型 VMware Virtual Platform 处理器 Intel(R) Xeon(R) Gold 6348 CPU 2.60GHz 内存 64GB 整机类型/架构 x86…...

Ubuntu 22.04.4操作系统初始化详细配置

上一章节&#xff0c;主要讲解了Ubuntu 22.04.4操作系统的安装&#xff0c;但是在实际生产环境中&#xff0c;需要对Ubuntu操作系统初始化&#xff0c;从而提高系统的性能和稳定性。 一、查看Ubuntu系统版本和内核版本 # 查看系统版本 testubuntu:~$ sudo lsb_release -a Rel…...

[ACTF2020 新生赛]Upload

先写一个万能的一句话木马 使用一句话木马 发现这个是有内容过滤的 过滤了 <? 发现这个过滤的很死那就只能使用 不带 ? 的短标签了 使用script 标签 这个的使用只限于对方的php是5版本的 正好是低版本的 所以直接上传 改一下后缀为 phtml 成功上传 但是我们没有…...

Harbor2.0仓库镜像清理策略

背景 在持续集成和持续部署的流程中&#xff0c;频繁的构建和部署会生成大量的镜像版本。这些历史镜像如果不及时清理&#xff0c;会占用大量的存储空间&#xff0c;导致 Harbor 仓库膨胀&#xff0c;影响系统性能。 目前 公司的Harbor存储已经占用1T&#xff0c;好多的repo的…...

从零开始了解数据采集(二十一)——电子制造行业趋势分析案例

这次分享一个偏行业性的趋势分析案例&#xff0c;在项目中为企业实实在在的提高了良品率。不懂什么是趋势分析的同学&#xff0c;可以翻看前面的文章。 在广东某电子制造厂中&#xff0c;管理层发现最近几个月生产良品率有所波动&#xff0c;但无法明确波动原因&#xff0c;也…...

从零开始开发一个简易的五子棋游戏:使用 HTML、CSS 和 JavaScript 实现双人对战

介绍 五子棋&#xff0c;作为一种经典的棋类游戏&#xff0c;不仅考验玩家的策略与判断力&#xff0c;还能在繁忙的生活中带来一丝轻松。今天&#xff0c;我们将用 HTML、CSS 和 JavaScript 来开发一个简易的五子棋游戏&#xff0c;玩家可以在浏览器中与朋友展开一场刺激的对决…...

用Node.js施展文档比对魔法:轻松实现Word文档差异比较小工具,实现Word差异高亮标注(附完整实战代码)

引言&#xff1a;当「找不同」遇上程序员的智慧 你是否经历过这样的场景&#xff1f; 法务同事发来合同第8版修改版&#xff0c;却说不清改了哪里 导师在论文修改稿里标注了十几处调整&#xff0c;需要逐一核对 团队协作文档频繁更新&#xff0c;版本差异让人眼花缭乱 传统…...

计算机基本理论与 ARM 相关概念深度解析

一、计算机基本理论 1. 计算机的组成 计算机硬件系统由五大部件构成&#xff1a; 运算器&#xff1a;负责算术运算&#xff08;如加减乘除&#xff09;与逻辑运算&#xff08;如与、或、非&#xff09;&#xff0c;是数据处理的核心单元。控制器&#xff1a;从存储器中逐条提…...

adb常用的20个命令

ADB&#xff08;Android Debug Bridge&#xff09;是Android开发工具中的一个命令行工具&#xff0c;常用于与Android设备进行交互、调试和测试。以下是ADB常用的20个命令&#xff1a; ‌adb devices‌&#xff1a;列出所有已连接的设备及其状态。‌adb connect <device_ip…...

C++如何使用调试器(如GDB、LLDB)进行程序调试保姆级教程(2万字长文)

C作为一门高性能、接近底层的编程语言&#xff0c;其复杂性和灵活性为开发者提供了强大的能力&#xff0c;同时也带来了更高的调试难度。与一些高级语言不同&#xff0c;C程序往往直接操作内存&#xff0c;涉及指针、引用、多线程等特性&#xff0c;这些都可能成为错误的温床。…...

【计算机哲学故事1-2】输入输出(I/O):你吸收什么,便成为什么

“我最近&#xff0c;是不是废了……”她瘫在沙发上&#xff0c;手机扣在胸口&#xff0c;盯着天花板自言自语。 我坐在一旁&#xff0c;随手翻着桌上的杂志&#xff0c;没接话&#xff0c;等着她把情绪发泄完。 果然&#xff0c;几秒后&#xff0c;她重重地叹了口气&#xf…...

驱动开发硬核特训 · Day 22(上篇): 电源管理体系完整梳理:I2C、Regulator、PMIC与Power-Domain框架

&#x1f4d8; 一、电源子系统总览 在现代Linux内核中&#xff0c;电源管理不仅是系统稳定性的保障&#xff0c;也是实现高效能与低功耗运行的核心机制。 系统中涉及电源管理的关键子系统包括&#xff1a; I2C子系统&#xff1a;硬件通信基础Regulator子系统&#xff1a;电源…...

Linux一个系统程序——进度条

一、回车与换行 \n :回车加换行 \r:换行 观察我们发现以上的两个代码除了缺少/n没有任何区别&#xff0c;但是运行代码之后我们会发现有何大的不同&#xff0c;图一会先在屏幕上打印helloworld在进行休眠2&#xff0c;但是图二会先休眠2在打印helloworld&#xff0c;原因是pr…...