Linux 配置与管理 SWAP(虚拟内存)

news2024/11/16 5:49:06

Linux 配置与管理 SWAP(虚拟内存)

    • 一、作用
    • 二、创建交换文件(以创建一个2GB的交换文件为例)
      • 1. 创建交换文件
      • 2. 设置文件权限
        • 2.1. **关于 `sudo chmod 600 /root/swapfile` 是否一定要执行**
        • 2.2. **关于其他用户启动是否没权限用到交换分区**
      • 3. 将文件格式化为交换文件
      • 4. 启用交换文件
      • 5. (可选)设置开机自动挂载
      • 6. 验证交换区
    • 三、创建交换分区(假设已经有一个未分区的磁盘空间,例如`/dev/sdb1`)
      • 1. 格式化分区为交换分区
      • 2. 启用交换分区
      • 3. (可选)设置开机自动挂载
    • 四、交换文件和交换分区的作用
      • (一)共同作用
      • (二)交换文件的特殊作用
      • (三)交换分区的特殊作用
    • 五、交换文件和交换分区的区别
      • (一)存储形式
      • (二)创建和管理方式
      • (三)空间管理
    • 六、删除交换文件的步骤:
      • (一)、关闭交换文件
      • (二)、删除交换文件
      • (三)、(可选)从`/etc/fstab`中移除相关条目
    • 七、交换文件可以清空,但需要遵循一定的步骤:
      • (一)、关闭交换文件
      • (二)、清空交换文件内容
      • (三)、重新启用交换文件(可选)
    • 八、 **是否设置swap**

以下以Linux系统为例说明配置swap(交换空间)的步骤、命令及作用:

一、作用

  1. 缓解内存不足
    • 当系统的物理内存(RAM)不够用的时候,将一些不常用的内存数据临时存放到swap空间,从而为当前运行的程序腾出物理内存。例如,当同时运行多个大型应用程序,如数据库服务器、图形处理软件等,物理内存可能会被耗尽,swap空间就可以作为一种补充。
  2. 休眠功能支持
    • 在支持休眠功能的系统中,系统会将当前的内存状态保存到swap分区,以便在唤醒时能够快速恢复到之前的状态。

二、创建交换文件(以创建一个2GB的交换文件为例)

1. 创建交换文件

  • 使用dd命令创建一个指定大小的文件。例如:
sudo dd if=/dev/zero of=/root/swapfile bs=1M count=16384
  • 这里的if=/dev/zero表示输入文件为/dev/zero(一个特殊的设备文件,用于提供无限的空字符流),of=/root/swapfile表示输出文件为/swapfile(即将创建的交换文件),bs = 1M表示块大小为1兆字节,count = 2048表示总共创建16384个块,这样就创建了一个16GB(1M * 16384)的文件。
    在这里插入图片描述

2. 设置文件权限

  • 交换文件需要设置合适的权限,一般设置为只有根用户(root)可读写:
sudo chmod 600 /root/swapfile
  • 数字600表示文件所有者(root)具有读写权限(6:读权限4 + 写权限2),而所属组和其他用户没有任何权限(0)。
    在这里插入图片描述
2.1. 关于 sudo chmod 600 /root/swapfile 是否一定要执行
  • 从安全性角度
    • 在创建交换文件(/swapfile)时,执行 sudo chmod 600 /swapfile 是一个良好的安全实践,但不是绝对必须执行的操作。这个命令将交换文件的权限设置为只有文件所有者(通常是 root)具有读写权限,其他用户没有任何权限。这样做可以防止普通用户对交换文件进行意外的修改或者读取其中可能包含的敏感信息(虽然交换文件中的数据是内存数据交换过来的,但仍然可能包含一些未加密的机密信息)。
  • 从系统功能角度
    • 如果不执行这个命令,系统仍然可以使用交换文件来进行内存交换操作。交换文件的主要功能是作为虚拟内存的一部分,由操作系统内核来管理内存数据的交换,内核具有足够的权限来操作交换文件,与交换文件的用户权限设置关系不大。
2.2. 关于其他用户启动是否没权限用到交换分区
  • 实际情况
    • 其他用户不需要直接对交换文件(/swapfile)有特定的权限来使用交换分区。交换分区(或交换文件)的使用是由操作系统内核统一管理的。当系统内存不足时,内核会将内存中的数据交换到交换文件中,这个过程是内核级别的操作,与普通用户对交换文件的权限无关。普通用户在运行程序时,不需要关心交换文件的权限,他们只需要操作系统能够正常管理内存,包括在需要时使用交换文件来扩展虚拟内存。
  • 举例说明
    • 假设在一个多用户的Linux系统中,有用户 user1user2,如果交换文件 /swapfile 的权限被设置为 600,当 user1user2 运行各自的程序时,如 user1 运行一个占用大量内存的文本编辑程序,user2 运行一个数据库客户端程序。如果系统内存不足,内核会自动将这两个用户程序中暂时不使用的内存数据交换到 /swapfile 中,即使这两个用户对 /swapfile 没有直接的读写权限。

3. 将文件格式化为交换文件

  • 使用mkswap命令将文件格式化为交换文件格式:
sudo mkswap /root/swapfile
  • 这个命令会在/root/swapfile上创建交换文件系统。
    在这里插入图片描述

4. 启用交换文件

  • 使用swapon命令启用交换文件:
sudo swapon /root/swapfile
  • 执行这个命令后,系统就开始使用/root/swapfile作为交换空间了。
    在这里插入图片描述

5. (可选)设置开机自动挂载

  • 编辑/etc/fstab文件,添加以下一行:
echo "/root/swapfile swap swap defaults 0 0" >> /etc/fstab
  • 这样在系统启动时就会自动挂载交换文件。
    在这里插入图片描述

6. 验证交换区

free -g

在这里插入图片描述

三、创建交换分区(假设已经有一个未分区的磁盘空间,例如/dev/sdb1

1. 格式化分区为交换分区

  • 使用mkswap命令:
sudo mkswap /dev/sdb1
  • 这会将/dev/sdb1格式化为交换分区。

2. 启用交换分区

  • 使用swapon命令:
sudo swapon /dev/sdb1

3. (可选)设置开机自动挂载

  • 编辑/etc/fstab文件,添加以下一行:
/dev/sdb1 none swap sw 0 0

四、交换文件和交换分区的作用

(一)共同作用

  1. 内存扩展
    • 当系统物理内存(RAM)资源紧张时,交换文件和交换分区都能提供额外的“虚拟内存”空间。例如,在一个同时运行多个应用程序(如浏览器打开多个标签页、办公软件、多媒体播放器等)的Linux系统中,如果物理内存即将耗尽,系统会将一些暂时不使用的内存数据转移到交换空间(无论是交换文件还是交换分区),从而为正在运行的关键程序腾出物理内存,保证系统不会因为内存不足而崩溃。
  2. 支持系统休眠功能
    • 在支持休眠功能的操作系统中,交换文件或交换分区用于保存系统休眠前的内存状态。当系统从休眠状态恢复时,可以从交换空间中读取之前保存的内存数据,快速恢复到休眠前的运行状态。

(二)交换文件的特殊作用

  1. 灵活性
    • 交换文件可以方便地创建、调整大小或删除,不需要对磁盘进行重新分区操作。例如,在一个已经安装好操作系统并且磁盘分区布局固定的服务器上,如果发现需要增加交换空间,可以直接创建一个交换文件,而不用担心破坏现有的分区结构。这对于磁盘空间管理和系统配置的动态调整非常有用。

(三)交换分区的特殊作用

  1. 性能优势(在某些情况下)
    • 交换分区在一些情况下可能具有更好的性能。因为它是一个独立的磁盘分区,磁盘I/O操作可能会更高效。例如,在一些对磁盘I/O性能要求较高的服务器环境中,如果交换空间的使用较为频繁,使用专门的交换分区可能会减少磁盘寻道时间等开销,相比于交换文件可能会有一定的性能提升。
  2. 传统兼容性
    • 在一些较老的操作系统或者特定的系统安装和配置场景下,交换分区是一种传统的、被广泛支持的交换空间设置方式。例如,在一些嵌入式Linux系统或者基于传统BIOS的系统安装中,交换分区可能是默认或者更受推荐的交换空间设置方式。

五、交换文件和交换分区的区别

(一)存储形式

  1. 交换文件
    • 交换文件是一个普通的文件,存储在现有的文件系统中。例如,在Linux系统中,可以创建在ext4xfs等文件系统的目录下。它的大小可以像普通文件一样进行灵活调整,只要所在的文件系统有足够的可用空间。
  2. 交换分区
    • 交换分区是磁盘上一个独立的分区,在磁盘分区表中有专门的记录。它具有自己独立的分区格式(专门用于交换空间的格式),与文件系统分区(如ext4用于存储普通文件和目录的分区)是分开的。

(二)创建和管理方式

  1. 交换文件
    • 创建交换文件相对简单,只需要使用命令(如dd命令创建指定大小的文件,mkswap命令格式化文件为交换文件格式,swapon命令启用交换文件),不需要对磁盘进行重新分区操作。调整大小也可以通过一些文件操作命令来实现(虽然可能需要一些额外的步骤,如先禁用交换文件,调整大小后再重新启用)。
  2. 交换分区
    • 创建交换分区需要对磁盘进行分区操作,这通常需要使用磁盘分区工具(如fdiskparted等)。在分区创建后,再使用mkswap命令格式化分区为交换分区格式,最后用swapon命令启用。调整交换分区的大小相对复杂,可能需要重新分区、移动数据等操作,并且有一定的风险,如果操作不当可能会导致数据丢失。

(三)空间管理

  1. 交换文件
    • 交换文件的空间管理依赖于所在的文件系统。如果所在文件系统的可用空间不足,可能无法创建足够大的交换文件或者无法调整交换文件的大小。例如,如果/分区(假设交换文件创建在/分区下)只剩下1GB的可用空间,就无法创建一个2GB的交换文件。
  2. 交换分区
    • 交换分区有自己独立的空间,不受其他文件系统分区的影响。只要磁盘有未分配的空间,就可以创建合适大小的交换分区,并且在创建后其空间是固定的(除非重新分区调整),不会受到其他分区文件操作的影响。

六、删除交换文件的步骤:

(一)、关闭交换文件

  1. 查看正在使用的交换文件或分区
    • 在Linux系统中,可以使用swapon -s命令查看当前正在使用的交换空间(包括交换文件和交换分区)。例如:
    swapon -s
    
    • 该命令会输出类似如下的结果:
    Filename                Type        Size    Used    Priority
    /swapfile               file        2097148 0       -1
    
    • 这里显示了交换文件/swapfile的相关信息,如类型为file,大小为2097148(以KB为单位,这里是2GB)等。
  2. 关闭交换文件
    • 如果要删除交换文件,首先需要使用swapoff命令关闭它。假设交换文件是/swapfile,执行以下命令:
    sudo swapoff /swapfile
    

(二)、删除交换文件

  1. 删除文件本身
    • 在关闭交换文件后,可以使用rm命令删除交换文件。例如:
    sudo rm /swapfile
    
    • 这样就删除了交换文件。

(三)、(可选)从/etc/fstab中移除相关条目

  1. 编辑/etc/fstab文件
    • 如果之前在/etc/fstab文件中添加了自动挂载交换文件的条目(例如/swapfile none swap sw 0 0),需要编辑/etc/fstab文件并删除该条目。可以使用文本编辑器(如vinano)来编辑。例如,使用nano编辑:
    sudo nano /etc/fstab
    
    • 在文件中找到并删除关于交换文件的那一行,然后保存并退出(在nano中按Ctrl + O保存,按Ctrl+X退出)。

七、交换文件可以清空,但需要遵循一定的步骤:

(一)、关闭交换文件

  1. 查看交换文件使用情况
    • 在Linux系统中,可以使用swapon -s命令查看当前正在使用的交换空间(包括交换文件)。例如:
    swapon -s
    
    • 这会显示类似如下的结果(如果存在交换文件的话):
    Filename                Type        Size    Used    Priority
    /swapfile               file        2097148 102400   -1
    
    • 这里展示了交换文件的名称(/swapfile)、类型(file)、大小(以KB为单位,这里是2GB)、已使用的空间(102400KB)等信息。
  2. 关闭交换文件
    • 使用swapoff命令关闭交换文件。假设交换文件为/swapfile,执行以下命令:
    sudo swapoff /swapfile
    

(二)、清空交换文件内容

  1. 覆盖交换文件内容
    • 一种方法是使用dd命令将交换文件内容覆盖为零。例如:
    sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
    
    • 这里的if=/dev/zero表示输入为全零的设备文件,of=/swapfile表示输出到交换文件,bs = 1M是块大小为1兆字节,count = 2048表示总共2048个块(假设交换文件大小为2GB)。这样就将交换文件的内容清空了。

(三)、重新启用交换文件(可选)

  1. 重新格式化交换文件(如果需要)
    • 在某些情况下,可能需要重新格式化交换文件。可以使用mkswap命令:
    sudo mkswap /swapfile
    
  2. 重新启用交换文件
    • 使用swapon命令重新启用交换文件:
    sudo swapon /swapfile
    

需要注意的是,在清空交换文件之前,确保系统有足够的物理内存来处理正在运行的程序,因为清空交换文件可能会导致系统在重新启用交换文件之前,可利用的虚拟内存减少。

八、 是否设置swap

  1. 需要设置swap的情况

    • 内存有限的系统
      • 对于物理内存较小的系统,如早期的嵌入式设备或者一些配置较低的服务器(例如只有1 - 2GB物理内存),设置swap是很有必要的。例如,在运行一些基本的服务器应用程序(如轻量级的Web服务器、DNS服务器等)时,可能会偶尔遇到内存压力,swap可以提供额外的虚拟内存来防止系统因内存不足而崩溃。
    • 运行多种应用的系统
      • 如果系统需要同时运行多种不同类型的应用程序,尤其是当这些应用程序的内存使用模式难以精确预测时。例如,在一个同时运行办公软件、数据库客户端和一些后台监控程序的桌面系统中,不同应用程序的内存需求可能会在不同时间达到峰值。swap可以在物理内存紧张时作为缓冲,确保系统的稳定运行。
    • 支持休眠功能的系统
      • 对于需要支持休眠功能的桌面系统或笔记本电脑,swap分区是必需的。在系统休眠时,内存中的数据会被保存到swap分区中,当系统唤醒时再从swap分区恢复到内存。例如,在Windows系统中,休眠功能依赖于类似swap分区(页面文件)的机制,在Linux系统中同样需要swap分区来实现休眠功能。
  • 可以不设置swap的情况
    • 内存充足且可预测的系统
      • 在拥有大容量物理内存(如数十GB甚至数百GB)并且应用程序的内存使用模式非常稳定、可预测的系统中,可以考虑不设置swap。例如,在一些专门用于内存数据库(如Redis集群,并且为其分配了足够的物理内存)的服务器中,由于Redis会尽量使用内存来提高性能,并且内存分配是可精确控制的,如果系统有足够的冗余内存,不设置swap可以避免因磁盘I/O带来的性能损失。
    • 对性能要求极高的内存密集型系统
      • 对于一些对性能要求极高的内存密集型应用场景,如高性能计算(HPC)集群中的计算节点,这些节点主要用于运行大规模的数值模拟、基因测序等计算任务,需要尽可能减少磁盘I/O对计算性能的影响。如果系统已经配备了足够的物理内存来满足任务需求,不设置swap可以提高系统的整体性能。
  1. 设置swap大小及配置规则
    • 根据物理内存大小确定
      • 小容量物理内存(1 - 4GB)
        • 如果物理内存较小,如1 - 4GB,可以按照传统的1.5 - 2倍物理内存来设置swap大小。例如,对于2GB物理内存的系统,可以设置3 - 4GB的swap。这样可以在内存不足时提供相对充足的虚拟内存支持,确保系统能够正常运行一些基本的应用程序。
      • 中等容量物理内存(4 - 16GB)
        • 对于4 - 16GB物理内存的系统,可以设置1 - 1.5倍物理内存大小的swap。例如,对于8GB物理内存的系统,可以设置8 - 12GB的swap。在这种情况下,系统有一定的物理内存基础,不需要过大的swap来补充,但仍然需要一定的虚拟内存来应对偶尔的内存压力。
      • 大容量物理内存(16GB以上)
        • 当物理内存达到16GB或更多时,可以根据系统的具体需求灵活设置swap大小。如果系统运行的应用程序内存使用相对稳定,可能只需要设置较小的swap,如4 - 8GB,甚至可以更小。但如果系统运行多种复杂的应用程序或者需要支持休眠功能等,可能需要设置相对较大的swap,如8 - 16GB。
    • 根据应用程序需求确定
      • 内存需求波动大的应用
        • 如果系统运行的应用程序内存需求波动较大,如视频编辑软件(在导入、编辑和渲染不同阶段内存需求差异很大)或者一些企业级的ERP系统(在不同业务流程操作时内存需求变化明显),需要设置相对较大的swap。例如,对于运行视频编辑软件的系统,即使有8GB物理内存,可能也需要设置8 - 12GB的swap来应对渲染等内存需求高峰阶段。
      • 内存需求稳定的应用
        • 对于内存需求非常稳定的应用程序,如一些简单的网络监控工具或者静态Web服务器,在有足够物理内存的情况下,可以设置较小的swap。例如,对于运行简单网络监控工具的系统,即使有4GB物理内存,可能只需要设置1 - 2GB的swap。

是否设置swap以及设置多大的swap需要综合考虑系统的物理内存大小、应用程序的内存使用特性、系统功能需求(如休眠)等多方面因素。

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

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

相关文章

大数据电商数仓项目--实战(一)数据准备

第一章 数仓分层 1.1 为什么要分层 1.2 数仓命名规范 1.2.1 表命名 ODS层命名为ods_表名DIM层命名为dim_表名DWD层命名为dwd_表名DWS层命名为dws_表名DWT层命名为dwt_表名ADS层命名为ads_表名临时表命名为tmp_表名 1.2.2 表字段类型 数量类型为bigint金额类型为decimal(16…

猫咪独自在家可以吗?希喂、美的、有哈宠物空气净化器哪款好?

这不是快要国庆了吗,本来计划去旅游的,结果我妈让我假期回家。收拾行李已经很烦了,行李箱旁的猫咪更是让我头疼。我妈因为之前浮毛过敏的事情,禁止我把猫咪再带回家,朋友们也各有计划,甚至连上门喂养都约满…

设备管理与点巡检系统

在现代企业管理中,设备的高效运作至关重要。为此,我们推出了设备管理与点巡检系统,通过自动化管理提升设备使用效率,保障生产安全。 系统特点 设备全生命周期管理 系统涵盖设备的各个阶段,从设备管理、点检、巡检、保…

计算曲线5s1-2的斜率

在行列可自由变换的条件下,平面上的5点结构只有34个 这次将5点结构通过结构加法化成2点结构5s1-4-3-2,并比较5s1-4-3-2的变化规律。 (A,B)---6*n*2---(0,1)(1,0) 分类A和B,A是34个5点结构,让B全是0。当收敛误差为7e-4&#xff0…

Netty源码解析-响应式实现(Reactor模式)

Netty基本介绍,参考 Netty与网络编程 1、Netty如何支持Reactor模式 1.1 主从Reactor模式 实现这种模式需要定义两个EventLoopGroup,bossGroup就是mainReactor, workerGroup就是subReactor, 接着我们进入下图的b.group方法 1.…

Tomcat部署及其优化

目录 一、Tomcat概述 二、Tomcat的组成 三、Tomcat请求过程 四、Tomcat服务部署 五、/usr/local/tomcat/目录下的主要目录说明 六、Tomcat虚拟主机配置 七、Tomcat优化 1.Tomcat配置文件参数优化 2.Tomcat JVM优化 一、Tomcat概述 Tomcat是基于java语言开发&#xff0c…

传知代码-轻量注意力网络实现苹果叶片识别

代码以及视频讲解 本文所涉及所有资源均在传知代码平台可获取 引言 该系统基于EfficientNet与多头自注意力机制,构建了一个高效、精准的苹果叶片识别模型,能够对不同种类的苹果叶片进行准确分类。通过结合EfficientNet的强大特征提取能力和多头注意力…

Ks渲染做汽车动画吗?汽车本地渲染与云渲染成本分析

Keyshot是一款强大的实时光线追踪和全域光渲染软件,它确实可以用于制作汽车动画,包括汽车模型的渲染和动画展示。Keyshot的动画功能允许用户创建相机移动、物体变化等动态效果,非常适合用于汽车动画的制作。 至于汽车动画的渲染成本&#xff…

Power Platform开发小技巧,一天一个APP, 如何快速搭建二维码识别器

之前,给大家分享了微软Power Platform开发课程——手把手教你搭建二维码生成器,很多小伙伴反馈真好用。这期我们继续为大家分享Power Platform的开发能力与技巧。 今天介绍如何开发⼀个⼆维码识别器。 该应用包含如下功能: 1.⼆维码图片的…

尾矿库安全监测系统:守护矿山安全的关键技术

尾矿库是矿山企业用于存放尾矿的重要设施,其安全状况直接关系到周边环境和人民生命财产安全。近年来,随着技术的不断进步,尾矿库安全监测系统应运而生,为尾矿库的安全管理提供了强有力的技术支持。本文将详细介绍尾矿库安全监测系…

基于spi机制构造的webshell

前言 最近在翻阅yzddmr6师傅博客的时候,发现师傅还有个github的地址 https://github.com/yzddmr6/MyPresentations 里面发现师傅去补天白帽子大会上讲解了一些webshell的攻防,特此进行了学习,然后发现了一个很有意思的webshell&#xff0c…

YOLOv9改进,YOLOv9主干网络替换为PP-LCNetV2(百度飞浆视觉团队自研,轻量化架构),全网独发

摘要 PP-LCNetV2 是在图像分类任务中提出的一种轻量级卷积神经网络,用于在边缘设备上实现高效的推理。PP-LCNet 系列模型的设计旨在提高移动和边缘设备上的推理性能,同时保持较高的准确率。PP-LCNetV2 是在 PP-LCNetV1 基础上改进的。 理论介绍 PP-LCNetV2模型结构如下: …

数据库存储加密技术有哪些 TDE透明加密和列表级加密

透明数据加密(TDE)和列级加密是数据库加密中两种常见的加密方式,它们在加密范围、实现方式以及对应用程序的影响等方面存在明显的区别。 透明数据加密(TDE) 定义: 透明数据加密(Transparent …

稀土阻燃协效剂-氢氧化镁(氢氧化铝)的应用

稀土阻燃协效剂凭借独特的稀土4f电子层结构,在聚合物材料燃烧时可催化酯化成炭,迅速在高分子表面形成致密连续的碳层,隔绝聚合物材料内部的可燃性气体与氧气的接触,从而达到阻燃抑烟的效果,且燃烧时不产生有毒有害气体。 金士镧系列稀土阻燃剂是一种基于稀土协效阻燃的复合阻燃…

CTF竞赛介绍以及刷题网址(超详细)零基础入门到精通,收藏这一篇就够了

CTF(Capture The Flag)中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。CTF起源于1996年DEFCON全球黑客大会,以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。发展至今&…

安全防护装备检测系统源码分享

安全防护装备检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer…

D18【python接口自动化学习】-python基础之内置数据类型

day18 综合练习:实现手机通讯录(下) 学习日期:20240925 学习目标:内置数据类型--27 小试牛刀:如何使用类型转换实现手机通讯录(下) 学习笔记: 实现手机通讯录 案例文…

以题为例浅谈反序列化漏洞

什么是反序列化漏洞 反序列化漏洞是基于序列化和反序列化的操作,在反序列化——unserialize()时存在用户可控参数,而反序列化会自动调用一些魔术方法,如果魔术方法内存在一些敏感操作例如eval()函数,而且参数是通过反序列化产生的…

占领矩阵-第15届蓝桥省赛Scratch中级组真题第5题

[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第190讲。 如果想持续关注Scratch蓝桥真题解读,可以点击《Scratch蓝桥杯历年真题》并订阅合集,…

【图像处理】多幅不同焦距的同一个物体的平面图象,合成一幅具有立体效果的单幅图像原理(一)

合成一幅具有立体效果的单幅图像,通常是利用多个不同焦距的同一物体的平面图像,通过图像处理技术实现的。以下是该过程的基本原理: 1. 立体视觉原理 人眼的立体视觉是通过双眼观察物体的不同视角而获得的。两只眼睛的位置不同,使…