【OpenCV基础 1】几何变换、形态学处理、阈值分割、区域提取和脱敏处理
目录
一、图像几何变化
1、对图片进行放大、缩小、水平放大和垂直放大
2、旋转、缩放、控制画布大小
二、图像形态学处理
1、梯度运算
2、闭运算
3、礼帽运算
4、黑帽运算
三、图像阈值分割
1、二值化处理
2、反二值化处理
3、截断阈值处理
4、超阈值零处理
5、低阈值零处理
6、自适应阈值处理
7、Otsu处理
四、图像处理基础
1、感兴趣区域的提取
2、人脸部分进行脱敏处理
一、图像几何变化
我们以lena图片作为素材
1、对图片进行放大、缩小、水平放大和垂直放大
import cv2
import numpy as np'''1、将lena_color.jpg 放大到600*600
2、将lena_color.jgp 缩小到50*50
3、将lena_color.jgp 在水平方向放大到2位,垂直方向放大到1.5倍
4、将以上所有图像进行显示。'''img = cv2.imread('project_demo/class_picture/lena_color.jpg')
img1 = cv2.resize(img, (600, 600))
img2 = cv2.resize(img, (50, 50))
img3 = cv2.resize(img, (0, 0), fx=2, fy=1.5)
cv2.imshow('img1', img1)
cv2.imshow('img2', img2)
cv2.imshow('img3', img3)
cv2.waitKey(0)
cv2.destroyAllWindows()
2、旋转、缩放、控制画布大小
'''
将lena_color.jpga、以图像中心为旋转中心,顺时针旋转60度,b、图像缩小为原来的0.4,c、画布大小为原始图像大小。
再将图像进行平移至原始图像的(0,0)->变换后图像的(50,25)
'''
from tkinter import W
import cv2
import numpy as np
# 读取图像
img = cv2.imread('project_demo/class_picture/lena_color.jpg')
# 图像旋转
h, w = img.shape[:2] # 获取图像的宽高
M = cv2.getRotationMatrix2D((w / 2, h / 2), -60, scale=0.4) # 获取旋转矩阵
rotated1 = cv2.warpAffine(img, M, (w, h)) # 进行旋转
cv2.imshow('rotated1', rotated1)
# 图像平移
src = np.float32([[0, 0], [0, w-1], [h-1, 0]]) # 获取原始图像的三个点
dst = np.float32([[50, 25], [50, w + 25], [h + 50, 25]]) # 获取变换后的三个点
M2 = cv2.getAffineTransform(src, dst) # 获取仿射变换矩阵
rotated2 = cv2.warpAffine(rotated1, M2, (w, h)) # 进行仿射变换
cv2.imshow('rotated2', rotated2)cv2.waitKey(0)
cv2.destroyAllWindows()
效果图:
二、图像形态学处理
1、梯度运算
import cv2
import numpy as np# 形态学梯度运算
image = cv2.imread('project_demo/class_picture/gradient.bmp')
kernel = np.ones((3, 3), np.uint8)
gradient_image = cv2.morphologyEx(image, cv2.MORPH_GRADIENT, kernel)
cv2.imshow('Original Image', image)
cv2.imshow('Gradient Image', gradient_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
2、闭运算
image = cv2.imread('project_demo/class_picture/gradient.bmp')
kernel = np.ones((3, 3), np.uint8)
closing_image = cv2.morphologyEx(image, cv2.MORPH_CLOSE, kernel)
cv2.imshow('Original Image', image)
cv2.imshow('Closing Image', closing_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
3、礼帽运算
image = cv2.imread('project_demo/class_picture/lena.bmp')
image2 = cv2.imread('project_demo/class_picture/gradient.bmp')
kernel = np.ones((3, 3), np.uint8)
tophat_image = cv2.morphologyEx(image, cv2.MORPH_TOPHAT, kernel)
tophat_image2 = cv2.morphologyEx(image2, cv2.MORPH_TOPHAT, kernel)
cv2.imshow('Original Image', image)
cv2.imshow('Top Hat Image', tophat_image)
cv2.imshow('Original Image2', image2)
cv2.imshow('Top Hat Image2', tophat_image2)
cv2.waitKey(0)
cv2.destroyAllWindows()
4、黑帽运算
image = cv2.imread('project_demo/class_picture/lena.bmp')
image2 = cv2.imread('project_demo/class_picture/gradient.bmp')
kernel = np.ones((3, 3), np.uint8)
blackhat_image = cv2.morphologyEx(image, cv2.MORPH_BLACKHAT, kernel)
blackhat_image2 = cv2.morphologyEx(image2, cv2.MORPH_BLACKHAT, kernel)
cv2.imshow('Original Image', image)
cv2.imshow('Black Hat Image', blackhat_image)
cv2.imshow('Original Image2', image2)
cv2.imshow('Black Hat Image2', blackhat_image2)
cv2.waitKey(0)
cv2.destroyAllWindows()
三、图像阈值分割
1、二值化处理
import numpy as npimg = cv2.imread('project_demo/class_picture/lena_gray.jpg')
# 二进制阈值化,设阈值127
retval, dst = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)
cv2.imshow('img', img)
cv2.imshow('dst', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
2、反二值化处理
# 反二进制阈值化,设阈值127
retval, dst = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY_INV)
cv2.imshow('img', img)
cv2.imshow('dst', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
3、截断阈值处理
retval, dst = cv2.threshold(img, 127, 255, cv2.THRESH_TRUNC)
cv2.imshow('img', img)
cv2.imshow('dst', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
4、超阈值零处理
# 超阈值化零处理,设阈值127
retval, dst = cv2.threshold(img, 127, 255, cv2.THRESH_TOZERO)
cv2.imshow('img', img)
cv2.imshow('dst', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
5、低阈值零处理
# 低阈值零处理,设阈值127
retval, dst = cv2.threshold(img, 127, 255, cv2.THRESH_TOZERO_INV)
cv2.imshow('img', img)
cv2.imshow('dst', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
6、自适应阈值处理
# 自适应阈值处理
dst = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11, 2)
cv2.imshow('img', img)
cv2.imshow('dst', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
7、Otsu处理
# Otsu处理
retval, dst = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
cv2.imshow('img', img)
cv2.imshow('dst', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
四、图像处理基础
1、感兴趣区域的提取
步骤:
① 读取一张图像,如果成功读取,则显示该图像,如果读取失败,则显示“The file is not exist”
② 读取图像
③ 对兴趣区域提取
'''
对兴趣区域提取
1.读取一张图像,如果成功读取,则显示该图像,如果读取失败,则显示“The file is not exist”
2.读取图像
3.对兴趣区域提取
'''
import cv2
import matplotlib.pyplot as plt
def show_plt():iamge_path = 'project_demo/class_picture/kongfu_panda.jpg'image = plt.imread(iamge_path)plt.imshow(image)plt.axis('off')plt.show()
def main():img = cv2.imread('project_demo/class_picture/kongfu_panda.jpg')if img is None:print('The file is not exist')else:# 提取兴趣区域img1 = img[70:325, 48:221]img2 = img[83:471, 377:592]img3 = img[259:481, 621:737]cv2.imshow('img1', img1)cv2.imshow('img2', img2)cv2.imshow('img3', img3)cv2.waitKey(0)cv2.destroyAllWindows()
if __name__ == '__main__':show_plt()main()
2、人脸部分进行脱敏处理
'''
对海报的人脸部分进行脱敏处理'''
import cv2
import matplotlib.pyplot as plt
import numpy as npdef show_plt():iamge_path = 'project_demo/class_picture/kongfu_panda.jpg'image = plt.imread(iamge_path)plt.imshow(image)plt.axis('off')plt.show()
def main():img = cv2.imread('project_demo/class_picture/police_story.png')cv2.namedWindow('image', cv2.WINDOW_NORMAL)cv2.resizeWindow('image', 500, 500)if img is None:print('The file is not exist')else:face = np.random.randint(0, 255, (600, 445, 3))img[50:650, 364:809, :] = facecv2.imshow('image', img)cv2.waitKey(0)cv2.destroyAllWindows()
if __name__ == '__main__':#show_pltmain()
相关文章:
【OpenCV基础 1】几何变换、形态学处理、阈值分割、区域提取和脱敏处理
目录 一、图像几何变化 1、对图片进行放大、缩小、水平放大和垂直放大 2、旋转、缩放、控制画布大小 二、图像形态学处理 1、梯度运算 2、闭运算 3、礼帽运算 4、黑帽运算 三、图像阈值分割 1、二值化处理 2、反二值化处理 3、截断阈值处理 4、超阈值零处理 5、低…...
代码随想录算法训练营 Day49 图论Ⅰ 深度优先与广度优先
图论 基础 图的概念 图的概念 概念清单有向图 (a)无向图 (b)有向/无向如图 a 所示每条边有指向如图 b 所示每条边没有箭头指向权值每条边的权值每条边的权值度-有几条边连到该节点 (eg V 2 V_2 V2 度为 3)入度/出度出度:从该节点出发的边个数入度:…...
LG P9844 [ICPC 2021 Nanjing R] Paimon Segment Tree Solution
Description 给定序列 a ( a 1 , a 2 , ⋯ , a n ) a(a_1,a_2,\cdots,a_n) a(a1,a2,⋯,an),有 m m m 次修改 ( l , r , v ) (l,r,v) (l,r,v): 对每个 i ∈ [ l , r ] i\in[l,r] i∈[l,r],令 a i ← a i v a_i\gets a_iv ai←…...
PyTorch音频处理技术及应用研究:从特征提取到相似度分析
文章目录 音频处理技术及应用音频处理技术音视频摘要技术音频识别及应用 梅尔频率倒谱系数音频特征尔频率倒谱系数简介及参数提取过程音频处理快速傅里叶变换(FFT)能量谱处理离散余弦转换 练习案例:音频建模加载音频数据源波形变换的类型绘制波形频谱图波形Mu-Law 编…...
【IPMV】图像处理与机器视觉:Lec10 Edges and Lines
【IPMV】图像处理与机器视觉:Lec10 Edges and Lines 本系列为2025年同济大学自动化专业**图像处理与机器视觉**课程笔记 Lecturer: Rui Fan、Yanchao Dong Lec0 Course Description Lec3 Perspective Transformation Lec7 Image Filtering Lec8 Image Pyramid …...
Elasticsearch 初步认识
Elasticsearch 初步认识 1 索引(index) 索引是具有相同结构的文档集合。例如,可以有一个客户信息的索引,包括一个产品目录的索引,一个订单数据的索引。在系统上索引的名字全部小写,通过这个名字可以用来执…...
数据库DDL
数据库DDL(数据定义语言)全面解析 一、DDL定义 DDL(Data Definition Language,数据定义语言)是SQL语言的一个子集,专门用于定义和管理数据库结构。它允许数据库管理员和开发人员创建、修改和删除数据库对象…...
企业级小程序APP用户数据查询系统安全脆弱性分析及纵深防御体系构建
一、用户数据查询系统安全现状分析 1.1 业务场景风险建模 在企业小程序用户数据查询业务中,普遍存在以下安全风险点: ①输入验证缺失:未对姓名、身份证号等关键输入进行严格的格式校验与合法性检查 ②身份认证薄弱:仅依赖基础参数…...
互联网大厂Java面试:从Spring Boot到微服务架构的技术深挖
场景描述 在某互联网大厂的面试会议室里,严肃的面试官老王正审视着面前的程序员明哥。这场面试以业务场景为切入点,围绕Java技术栈展开。 第一轮:基础知识与Spring生态 面试官老王: 明哥,你对Spring Boot的核心功能…...
23种设计模式解释+记忆
一、创建型模式(5种)—— “怎么造对象?” 单例模式(Singleton) 场景:公司的CEO只能有一个。 核心:确保一个类只有一个实例,全局访问。 关键词:唯一、全局访问。 工厂方…...
逻辑与非逻辑的弥聚
非逻辑弥聚与逻辑弥聚是复杂系统中两种不同的信息整合方式。逻辑弥聚侧重于通过明确的规则、规律和结构化方法,将分散的信息或功能进行有序的组织和集中处理,强调理性和确定性。而非逻辑弥聚则更多地涉及情感、直觉、经验等非线性、非结构化的因素&#…...
Python 从列表中删除值的多种实用方法详解
# Python 从列表中删除值的多种实用方法详解 在Python编程中,列表(List)是一种常用的数据结构,具有动态可变的特性。当我们需要从列表中删除元素时,根据不同的场景(如按值删除、按索引删除、批量删除等&…...
C++多线程数据错乱
C多线程数据错乱(也称为线程安全问题或数据竞争)主要是由于多个线程在没有正确同步的情况下,并发访问和修改共享数据导致的。其主要原因包括以下几个方面: 一、线程交替执行导致的非原子操作 线程在执行时,可能会在中途被挂起&a…...
StarRocks Community Monthly Newsletter (Apr)
版本动态 3.4.3 版本更新 核心功能升级 Routine Load和Stream Load新增Lambda表达式支持,支持复杂的列数据提取 增强JSON数据处理能力,支持将JSON Array/Object转为ARRAY/MAP类型 优化information_schema.task_runs视图查询,新增LIMIT支持…...
延时双删-争议与我的思路-001
目录 概括大概思路目的场景思路一退货时间差 思路2思路3 最后 概括 延时双删,是指在代码中删除两次缓存. 第一次自己访问,先删除.之后直接访问数据库获得数据 第二次是指 在第一步之后,在删除一次缓存的数据 大概思路 不进行延时双删的.寻找别的解决方法 目的 主要是为了…...
Tomcat简述介绍
文章目录 Web服务器Tomcat的作用Tomcat分析目录结构 Web服务器 Web服务器的作用是接收客户端的请求,给客户端作出响应。 知名Java Web服务器 Tomcat(Apache):用来开发学习使用;免费,开源JBoss࿰…...
掌握版本控制从本地到分布式
一、什么是版本控制? 版本控制是一种记录文件(尤其是源代码)在“时间轴”上变更的系统,主要功能包括: 历史回溯:随时恢复到任意版本的代码或文档;差异比较:查看两个版本之间的改动…...
Linux `touch` 命令深度解析与高阶应用指南
Linux `touch` 命令深度解析与高阶应用指南 一、核心功能解析1. 基本作用2. 与类似操作对比二、选项系统详解1. 基础选项说明2. 时间格式说明三、高阶应用技巧1. 时间戳控制2. 批量文件操作3. 特殊文件处理四、企业级应用场景1. 日志系统维护2. 持续集成系统3. 安全审计跟踪五、…...
Django学习
1:在PyCharm终端: # 查看已安装的Django版本 python -m django --version # 或 pip show django # 卸载当前Django pip uninstall django# 安装指定版本(例如Django 3.2.10) pip install django3.2.10 2. 检查Python版本兼容性 …...
Java IO框架
I/O框架 流 流的分类: 按方向: 输入流:将存储设备的内容读入到内存中 输出流:将内存的内容写入到存储设备中 按单位: 字节流:以字节为单位,可以读取所有数据 字符流:以字符为单…...
Spring AI Alibaba集成阿里云百炼大模型
1.准备工作 开发环境:JDK17、SpringBoot3.x 2.引入maven依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance&q…...
5月18总结
一.算法题总结 1. 解题思路:对于这个题,我最开始想到就是二分,但是头痛的是有三个解,如果我在-100到100之间二分,那么只能得出一个解,然后我就想了一下,这个要求精度,那么0.01这么小…...
动态规划(4)可视化理解:图形化思考
引言 动态规划作为一种强大的算法设计范式,其抽象性常常使初学者感到困惑。许多学习者在理解状态定义、状态转移方程和递归结构时遇到困难,这些困难往往源于动态规划问题的高度抽象性和复杂性。然而,人类的大脑天生擅长处理视觉信息,通过将抽象的动态规划概念转化为直观的…...
2025年- H31-Lc139- 242.回文链表(快慢指针)---java版--需2刷
1.题目描述 2.思路 (1)将链表取中位数,分为左右两部分。 (2)右半部分的元素进行反转链表,能达到O(1)的空间复杂度 (3)再判断左右部分的元素,是否…...
云原生安全:IaaS安全全解析(从基础到实践)
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念:IaaS的核心价值与安全边界 1.1 什么是IaaS? 基础设施即服务(Infrastructure as a Service)是云计算的基础层,提供虚拟机、存储、网络等基础资源。用户通过…...
【AGI】大模型微调数据集准备
【AGI】大模型微调数据集准备 (1)模型内置特殊字符及提示词模板(2)带有系统提示和Function calling微调数据集格式(3)带有思考过程的微调数据集结构(4)Qwen3混合推理模型构造微调数据…...
二分算法的介绍简单易懂
目录 1.概论 2.朴素的二分算法 3.求左端点的二分算法和求右端点的二分算法 4.总结 1.概论 要想了解什么是二分算法,我们就要知道什么是二分算法,二分算法是根据数组的规律,每次查找的数据原来的效率可能要O(n),而我…...
Trae IDE和VSCode Trae插件初探
Trae IDE初探 输入以下提示词: 生成一个to do list清单web页面,采用vue实现,可以在页面上进行todolist进行增删改查。 VSCode Trae插件初探 trae vscode插件初探 tips:如果还是提示找不到npm命令,重启vscode即可&am…...
数据结构 -- 树形查找(三)红黑树
红黑树 为什么要发明红黑树 平衡二叉树AVL:插入/删除很容易破坏平衡性,需要频繁调整树的形态。如:插入操作导致不平衡,则需要先计算平衡因子,找到最小不平衡子树(时间开销大),在进行…...
Mac 在恢复模式下出现 旋转地球图标 但进度非常缓慢
如果您的 Mac 在恢复模式下出现 旋转地球图标 但进度非常缓慢,可能是由于网络连接或系统恢复机制的问题。以下是详细的解决方案: 1. 检查网络连接 • Wi-Fi 信号:确保您的 Wi-Fi 信号稳定,建议靠近路由器或使用有线网络ÿ…...
【YOLO(txt)格式转VOC(xml)格式数据集】以及【制作VOC格式数据集 】
1.txt—>xml转化代码 如果我们手里只有YOLO标签的数据集,我们要进行VOC格式数据集的制作首先要进行标签的转化,以下是标签转化的脚本。 其中picPath为图片所在文件夹路径; txtPath为你的YOLO标签对应的txt文件所在路径; xmlPa…...
【信息系统项目管理师】第8章:项目整合管理 - 39个经典题目及详解
更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 【第1题】【第2题】【第3题】【第4题】【第5题】【第6题】【第7题】【第8题】【第9题】【第10题】【第11题】【第12题】【第13题】【第14题】【第15题】【第16题】【第17题】【第18题】【第19题】【第20题】【第…...
“Cloud Native English“云原生时代下的微服务架构设计:从理论到实战全解析
前引 :技术演进与架构变革的必然性 在数字经济高速发展的今天,软件系统的复杂度呈指数级增长。传统单体架构已无法满足高并发、弹性扩展和快速迭代的需求。根据Gartner预测,到2026年全球75%的企业将完成微服务架构改造。本文将深入探讨云原生…...
自由学习记录(61)
使用了 #pragma multi_compile_fwdbase 这条编译指令启用了 Unity 内部用于主光源阴影支持的一组关键词变体,如: SHADOWS_SCREEN(屏幕空间阴影贴图) SHADOWS_DEPTH(深度图阴影) SHADOWS_SOFT(…...
深入了解linux系统—— 基础IO(下)
前言 在基础IO(上)中,我们了解了文件相关的系统调用;以及文件描述符是什么,和操作系统是如何将被打开的文件管理起来的。 本篇文章来继续学习文件相关的知识 重定向 在了解重定向之前,我们先来看这样的…...
Flink Table SQL
Apache Flink 提供了强大的 Table API 和 SQL 接口,用于统一处理批数据和流数据。它们为开发者提供了类 SQL 的编程方式,简化了复杂的数据处理逻辑,并支持与外部系统集成。 🧩 一、Flink Table & SQL 核心概念 概念描述Table…...
【Git】基本操作
【简介】 Git是一种“版本控制器”, 可以用于记录每次的修改以及版本的迭代 其可以控制电脑上所有格式的文件,方便地查看文件的每个小修改版本都修改了什么内容,但前提条件是被管理的文件需要放在对应的git仓库(又名“版本库”&…...
【八股战神篇】MySQL高频面试题
目录 专栏简介 一 什么是索引 延伸 1 索引的底层使用的是什么数据结构? 2 MySQL 索引分类有哪些? 3 什么字段适合创建索引? 4 索引失效的场景 5 什么是最左匹配原则? 二 为什么 InnoDB 存储引擎选用 B 树而不是 B 树呢&a…...
服务器防文件上传手写waf
一、waf的目录结构,根据自己目录情况进行修改 二、创建文件夹以及文件 sudo mkdir -p /www/server/waf-monitor sudo mkdir -p /www/server/waf-monitor/quarantine #创建文件夹 chmod 755 /www/server/waf-monitor #赋权cd /www/server/waf-monitor/touch waf-m…...
ElasticSearch-集群
本篇文章依据ElasticSearch权威指南进行实操和记录 1,空集群 即不包含任何节点的集群 集群大多数分为两类,主节点和数据节点 主节点 职责:主节点负责管理集群的状态,例如分配分片、添加和删除节点、监控节点故障等。它们不直接…...
Android开发——原生渲染方案实现 PDF 预览功能
Android开发——原生渲染方案实现 PDF 预览功能 1. 引言2. 原生渲染方案核心设计:从数据到视图3. 混合文档容器:ViewPager2 与适配器设计1. 引言 在移动应用开发中,PDF 预览是文档处理场景的核心需求之一。Android 生态提供了多元化的技术方案,从系统级简版预览到原生渲染…...
Java求职者面试:从Spring Boot到微服务的技术点解析
Java求职者面试:从Spring Boot到微服务的技术点解析 场景:互联网医疗-预约挂号系统 面试官: “小明,我们今天的场景是一个互联网医疗的预约挂号系统。我们需要支持高并发的用户预约操作,同时保证数据一致性和系统的高…...
操作系统听课笔记之进程的概念
引入新的概念,为什么不能叫程序 内存中进程Image实例: stack: 局部变量(函数弹出来没有了) data: 全局变量(共享) 静态变量 heap: malloc分配的内存 从数据结构和算法角度解决问题: 设计相应的数据结构和设计算法 数据结构: 进程PCB 算法:创建进程和进程通信各种操作在线内…...
【基于Spring Boot 的图书购买系统】深度讲解 用户注册的前后端交互,Mapper操作MySQL数据库进行用户持久化
引言 在现代Web应用中,用户注册功能是用户与应用交互的入口。一个高效、安全且用户友好的注册系统不仅能吸引用户,还能为后续功能(如个性化服务)奠定基础。本博客将通过一个实际案例,展示如何使用HTML、JavaScript、j…...
Spark,连接MySQL数据库,添加数据,读取数据
以下是使用 Spark/SparkSQL 连接 MySQL 数据库、添加数据和读取数据的完整示例(需提前准备 MySQL 驱动包): 一、环境准备 1. 下载 MySQL 驱动 - 下载 mysql-connector-java-8.0.33.jar (或对应版本),放…...
ubuntu的虚拟机上的网络图标没有了
非正常的关机导致虚拟机连接xshell连接不上,ping也ping不通。网络的图标也没有了。 记录一下解决步骤 1、重启服务 sudo systemctl restart NetworkManager 2、图标显示 sudo nmcli network off sudo nmcli network on 3、sudo dhclient ens33 //(网卡) …...
Linux系统:ext2文件系统的核心概念和结构
本节重点 块、块组、分区的引入块组的构成inode与inode Table路径解析与路径缓存机制目录与文件名在文件系统中的存储分区的初始化与挂载 一、ext2文件系统 1.1 “块”的引入 在前言部分我们说扇区是磁盘硬件的最小读写单位,通常为512字节,但是在操作…...
Python 装饰器详解
装饰器是 Python 中一种强大的语法特性,它允许在不修改原函数代码的情况下动态地扩展函数的功能。装饰器本质上是一个高阶函数,它接受一个函数作为参数并返回一个新的函数。 基本装饰器 1. 简单装饰器示例 def my_decorator(func):def wrapper():prin…...
Docker配置容器开机自启或服务重启后自启
要将一个 Docker 容器设置为开机自启,你可以使用 docker update 命令或配置 Docker 服务来实现。以下是两种常见的方法: 方法 1:使用 docker update 设置容器自动重启 使用 docker update 设置容器为开机自启 你可以使用以下命令,…...
20250518 黎曼在三维空间中总结的一维二维的规律,推广到高维度合适吗?有没有人提出反对意见
黎曼在三维空间中总结的一维二维的规律,推广到高维度合适吗?有没有人提出反对意见 黎曼几何在数学物理中的广泛应用,尤其是在广义相对论和高维空间理论中,确实是建立在黎曼在三维空间中的推广基础上的。不过,这种推广…...