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

Python计算机视觉 第10章-OpenCV

Python计算机视觉 第10章-OpenCV

OpenCV 是一个C++ 库,用于(实时)处理计算视觉问题。实时处理计算机视觉的 C++ 库,最初由英特尔公司开发,现由 Willow Garage 维护。OpenCV 是在 BSD 许可下发布的开源库,这意味着它对于学术研究和商业应用是免费的。

10.1 OpenCV的Python接口

OpenCV(Open Source Computer Vision Library)是一个开源计算机视觉库,提供了大量的图像和视频处理功能。其 Python 接口使得用户能够方便地在 Python 中使用 OpenCV 的功能。OpenCV Python 接口通过 cv2 模块提供了对各种计算机视觉算法和工具的访问,包括图像处理、视频分析、机器学习等。

使用

#直接pip没法安装下来
pip install cv2#需要按照如下命令安装才会成功
pip install opencv-python

如果安装速度太慢可以使用清华源:

pip install 包名 -i https://pypi.tuna.tsinghua.edu.cn/simple

10.2 OpenCV基础知识

主要功能:
  1. 图像读取和显示

    • 读取图像:cv2.imread()
    • 显示图像:cv2.imshow()
    • 保存图像:cv2.imwrite()
  2. 图像处理

    • 图像转换:cv2.cvtColor()
    • 图像平滑:cv2.GaussianBlur(), cv2.medianBlur()
    • 边缘检测:cv2.Canny()
  3. 几何变换

    • 图像缩放:cv2.resize()
    • 旋转和仿射变换:cv2.warpAffine()
    • 透视变换:cv2.warpPerspective()
  4. 特征检测与描述

    • 角点检测:cv2.cornerHarris()
    • 特征匹配:cv2.BFMatcher(), cv2.FlannBasedMatcher()
  5. 视频处理

    • 捕捉视频:cv2.VideoCapture()
    • 播放视频:cv2.imshow()(与图像处理相同)
  6. 机器学习与深度学习

    • 加载预训练模型:cv2.dnn.readNet()
    • 进行推理:cv2.dnn.forward()

示例代码如下:

import cv2
import numpy as np
import matplotlib.pyplot as plt# 读取图像
image = cv2.imread('test.jpg')# 显示原图
cv2.imshow('Original Image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()# 转换为灰度图
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 图像平滑
smoothed_image = cv2.GaussianBlur(gray_image, (5, 5), 0)# 边缘检测
edges = cv2.Canny(smoothed_image, 100, 200)# 显示处理结果
fig, axs = plt.subplots(1, 3, figsize=(15, 5))
axs[0].imshow(cv2.cvtColor(gray_image, cv2.COLOR_BGR2RGB), cmap='gray')
axs[0].set_title('Gray Image')
axs[0].axis('off')axs[1].imshow(cv2.cvtColor(smoothed_image, cv2.COLOR_BGR2RGB), cmap='gray')
axs[1].set_title('Smoothed Image')
axs[1].axis('off')axs[2].imshow(cv2.cvtColor(edges, cv2.COLOR_BGR2RGB), cmap='gray')
axs[2].set_title('Edges')
axs[2].axis('off')plt.show()

处理结果如下:
在这里插入图片描述

实验图1 示例代码处理结果

其中:

  1. 读取图像cv2.imread('test.jpg)

  2. 转换为灰度图cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

  3. 图像平滑cv2.GaussianBlur(gray_image, (5, 5), 0)

  4. 边缘检测cv2.Canny(smoothed_image, 100, 200)

  5. 显示结果:使用 matplotlib 展示灰度图、平滑图像和边缘检测结果

10.3 处理视频

OpenCV 提供了全面的视频处理功能,主要包括以下几个方面:

  1. 读取视频

    • 打开视频文件或摄像头进行视频流读取。
    • 使用 cv2.VideoCapture() 进行视频捕捉。
  2. 显示视频

    • 显示视频帧或视频流。
    • 使用 cv2.imshow() 显示每一帧图像。
  3. 处理视频

    • 对视频帧进行各种图像处理操作,如颜色转换、滤镜应用、对象检测等。
  4. 写入视频

    • 将处理后的视频保存到文件中。
    • 使用 cv2.VideoWriter() 进行视频编写和保存。
  5. 视频属性获取

    • 获取视频的帧率、分辨率、总帧数等信息。
    • 通过 cv2.CAP_PROP_FPScv2.CAP_PROP_FRAME_WIDTHcv2.CAP_PROP_FRAME_HEIGHT 获取视频属性。
  6. 逐帧处理

    • 对每一帧进行个性化处理,例如去噪、边缘检测、特效添加等。
  7. 视频流处理

    • 实时处理来自摄像头的视频流,包括实时特效应用和流媒体处理。

这些功能使得 OpenCV 能够实现丰富的视频分析和处理任务,如视频编辑、运动跟踪、实时监控等。

10.4 跟踪

视频跟踪是计算机视觉中的一项重要任务,用于在视频序列中持续追踪特定的对象。OpenCV 提供了多种跟踪算法,可以用于实现目标跟踪功能。

主要功能:
  1. 初始化跟踪器

    • 使用预定义的跟踪器算法(如 KLT、MOSSE、CSRT 等)来初始化跟踪器。
  2. 目标检测

    • 在视频的第一帧中检测并确定要跟踪的目标区域。
  3. 跟踪目标

    • 在后续帧中持续追踪目标,更新目标的位置。
  4. 更新跟踪器

    • 根据每帧中的目标位置更新跟踪器。
  5. 可视化跟踪结果

    • 在视频帧上绘制跟踪结果,例如矩形框或轨迹。
常见跟踪器:
  • KLT(Kanade-Lucas-Tomasi)

    • 基于特征点跟踪的方法,适用于处理局部特征的目标。
  • MOSSE(Minimum Output Sum of Squared Error)

    • 基于相关滤波器的跟踪方法,速度快且适用于低分辨率目标。
  • CSRT(Discriminative Correlation Filter with Channel and Spatial Reliability)

    • 结合了通道和空间可靠性的跟踪方法,适用于处理尺度变化和遮挡情况。
  • MedianFlow

    • 基于光流的方法,适用于处理稳定的目标跟踪。

应用场景

  • 实时监控:跟踪视频监控中的运动目标。
  • 视频分析:分析运动对象的轨迹和行为。
  • 人机交互:在增强现实和虚拟现实中跟踪用户的动作。

通过这些跟踪功能,OpenCV 能够帮助实现高效的目标跟踪,广泛应用于安防、自动驾驶、运动分析等领域。

10.4.2 Lucas-Kanade 算法

Lucas-Kanade 算法 是一种经典的光流法,用于在视频序列中估计每一帧图像中像素的运动。它基于局部区域的假设,通过求解局部区域内光流的速度来实现目标的跟踪和运动估计。

核心思想
  1. 局部光流假设

    • 假设目标在连续帧之间的运动是局部一致的,即在小区域内所有像素的运动是相同的。
  2. 光流约束方程

    • 基于光流约束方程: I x u + I y v + I t = 0 I_x u + I_y v + I_t = 0 Ixu+Iyv+It=0
      其中, I x I_x Ix I y I_y Iy 分别是图像在 x x x y y y 方向上的梯度, I t I_t It 是时间梯度(图像亮度随时间的变化), u u u v v v 是光流的水平和垂直分量。
  3. 局部光流求解

    • 使用局部窗口内的像素梯度信息,通过最小二乘法来估计光流的速度。通常,采用 3 × 3 3 \times 3 3×3 的窗口进行光流的计算。
  4. 光流计算

    • 通过求解以下线性方程组得到光流速度:
      [ ∑ I x 2 ∑ I x I y ∑ I x I y ∑ I y 2 ] [ u v ] = − [ ∑ I x I t ∑ I y I t ] \begin{bmatrix} \sum I_x^2 & \sum I_x I_y \\ \sum I_x I_y & \sum I_y^2 \end{bmatrix} \begin{bmatrix} u \\ v \end{bmatrix} = - \begin{bmatrix} \sum I_x I_t \\ \sum I_y I_t \end{bmatrix} [Ix2IxIyIxIyIy2][uv]=[IxItIyIt]
      其中, ∑ \sum 表示在局部窗口内的积分。
优点
  • 准确性:在平滑和一致的区域内能够提供较高的准确性。
  • 实现简单:相对简单的数学模型,易于实现。
缺点
  • 对大位移敏感:在目标快速移动或存在较大位移的情况下,光流计算的准确性可能降低。
  • 需要平滑区域:算法在具有纹理的区域效果较好,对于平坦区域或重复纹理区域可能不够准确。
应用场景
  • 运动检测:估计视频序列中物体的运动。
  • 目标跟踪:在视频流中追踪特定目标的运动。
  • 光流估计:用于图像对齐、稳定化和动作分析等。

Lucas-Kanade 算法因其简单有效的特性,广泛应用于各种计算机视觉任务中,是视频处理和目标跟踪中的基础算法之一。

如图10-6所示:
在这里插入图片描述

图 10-6:通过 LKTrack 类利用 Lucas-Kanade 算法进行跟踪

10.5 更多实例

10.5.1 图像修复

图像修复是指对图像中丢失或损坏的部分进行重建的过程。这个过程不仅包括用于恢复丢失数据或损坏部分的算法,还包括在照片编辑应用程序中去除不需要的元素,如红眼或物体。图像修复旨在填补图像中的缺失区域,使其恢复到尽可能完整和自然的状态。

主要步骤:
  1. 标记损坏区域

    • 确定图像中需要修复的区域,通常通过掩模图像标记这些区域。掩模图像中的标记区域会指示需要修复的部分。
  2. 选择修复算法

    • 选择适当的图像修复算法。例如,均值填补(Inpainting)方法使用周围像素的信息来填补损坏区域。Navier-Stokes 算法和纹理合成等方法也可用于不同类型的图像修复。
  3. 应用修复算法

    • 利用所选的算法对损坏区域进行修复。算法会根据周围区域的图像数据来填补缺失部分。
  4. 处理结果

    • 对修复后的图像进行后处理,以确保修复区域与周围区域自然融合。检查和调整修复效果,以实现更好的视觉效果。
应用场景:
  • 图像恢复:修复老旧或损坏的照片,使其恢复到原始状态。
  • 去除红眼:在照片编辑中去除红眼效果。
  • 物体去除:在照片中去除不需要的物体或标记,填补被去除部分的图像信息。
  • 遮挡修复:处理由于遮挡或图像损坏导致的缺失区域。

图像修复技术可以有效地恢复图像的完整性和视觉质量,广泛应用于图像编辑、数字修复以及计算机视觉等领域。

如图10-8所示:
在这里插入图片描述

图 10-8:用 OpenCV 进行图像修复的示例。左图显示了由用户标记的“破损”区域。右图显示了经过图像修复后的结果

10.5.2 利用霍夫变换检测直线

霍夫变换 是一种经典的图像处理技术,用于检测图像中的直线或其他形状。霍夫变换通过将图像空间的直线检测转换为参数空间的峰值检测,从而实现直线的检测。

核心思想
  1. 直线方程

    • 在笛卡尔坐标系中,直线方程为 y = m x + c y = mx + c y=mx+c,其中 m m m 是斜率, c c c 是截距。
    • 在霍夫变换中,通常使用极坐标系表示直线: ρ = x cos ⁡ θ + y sin ⁡ θ \rho = x \cos \theta + y \sin \theta ρ=xcosθ+ysinθ
      其中, ρ \rho ρ 是直线到原点的距离, θ \theta θ 是直线的角度。
  2. 参数空间

    • 通过将每个图像中的点转换为参数空间中的直线表示,所有的直线将映射到参数空间中的一条曲线。
  3. 累加器

    • 在参数空间中,对每条曲线进行累加,形成一个累加器数组。直线的峰值对应于参数空间中的高响应值。
  4. 峰值检测

    • 在累加器中寻找峰值,这些峰值对应于图像中真实存在的直线。
霍夫变换步骤
  1. 边缘检测

    • 使用边缘检测算法(如 Canny 边缘检测)检测图像中的边缘点。
  2. 霍夫变换

    • 将每个边缘点转换为参数空间中的曲线,并在累加器中进行累加。
  3. 峰值检测

    • 在累加器中检测峰值,找到参数空间中的直线。
  4. 绘制直线

    • 根据检测到的直线参数,在原图像上绘制直线。
应用场景
  • 车道检测:用于自动驾驶系统中检测车道标线。
  • 建筑物结构分析:分析建筑物中的直线结构。
  • 图像校正:校正图像中的直线变形。

霍夫变换通过将图像空间中的问题转换到参数空间,能够有效检测直线,并广泛应用于各种计算机视觉任务中。

示例代码如下:

import cv2
import numpy as np
import matplotlib.pyplot as plt# 读取图像
image = cv2.imread('img_1.png')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 边缘检测
edges = cv2.Canny(gray, 50, 150)# 霍夫变换检测直线
lines = cv2.HoughLines(edges, 1, np.pi / 180, 200)# 在图像上绘制直线
if lines is not None:for line in lines:rho, theta = line[0]a = np.cos(theta)b = np.sin(theta)x0 = a * rhoy0 = b * rhox1 = int(x0 + 1000 * (-b))y1 = int(y0 + 1000 * (a))x2 = int(x0 - 1000 * (-b))y2 = int(y0 - 1000 * (a))cv2.line(image, (x1, y1), (x2, y2), (0, 0, 255), 2)# 显示结果
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.title('Detected Lines')
plt.axis('off')
plt.show()

处理结果如下:
在这里插入图片描述

实验图2 直线检测结果

相关文章:

Python计算机视觉 第10章-OpenCV

Python计算机视觉 第10章-OpenCV OpenCV 是一个C 库,用于(实时)处理计算视觉问题。实时处理计算机视觉的 C 库,最初由英特尔公司开发,现由 Willow Garage 维护。OpenCV 是在 BSD 许可下发布的开源库,这意味…...

多层感知机 (Multilayer Perceptron, MLP)

多层感知机 (Multilayer Perceptron, MLP) 通俗易懂算法 多层感知机(Multilayer Perceptron,MLP)是一种前馈人工神经网络。它的主要特点是由多层神经元(或节点)组成,包括至少一个隐藏层。MLP 是监督学习的…...

reg和wire的区别 HDL语言

文章目录 数据类型根本区别什么时候要定义wire小结 数据类型 HDL语言有三种数据类型:寄存器数据类型(reg)、线网数据类型(wire)、参数数据类型(parameter)。 根本区别 reg: 寄存器…...

前置声明和头文件之间的关系 问题

出现这些问题的原因是 ORB_SLAM3::MultiGraph 被前置声明了,但在使用的时候,编译器并没有看到 MultiGraph 类的完整定义。前置声明只能用于指针和引用,但如果要访问其成员函数或变量,必须包含完整的类定义。 解决方案步骤&#x…...

Linux02

1.相对路径和绝对路径 cd用于切换目录,对于路径可以用相对路径和绝对路径 例如:cd /home/user/public和cd public效果一样,都是将目录切换到HOME文件夹下的public文件夹 2.特殊路径符 .表示当前目录 ..表示上级目录 ~表示HOME目录 3.m…...

df 命令:显示磁盘空间使用情况

一、df 命令简介 ​df​命令用于显示文件系统的磁盘空间利用情况,包括文件系统的总空间、已用空间、可用空间以及挂载点信息。通过df​命令,用户可以快速了解系统中各个文件系统的空间使用情况。 ‍ 二、df 命令参数 df [选项] [目录/驱动器]选项&am…...

深入解析Go语言的容器包

在Go语言中,container标准包为开发者提供了三个非常有用的数据结构:堆(heap)、链表(list)和环(ring)。这些数据结构的实现分别位于container/heap、container/list和container/ring中…...

STM32 + W5500 实现HTTPS !

两点: 1. 让我们先站在操作系统之上的网络协议栈再之上来思考…… 2. 我们先简单粗暴地理解为:http + (加密)= https 先弄一个简单的HTTP网络客户端,连接服务器并读取默认页面。该应用程序可能如下所示: #include <sys/types.h> #include <sys/socket.h> …...

使用DuckDuckGo搜索API进行高效信息检索:Python实践指南

使用DuckDuckGo搜索API进行高效信息检索&#xff1a;Python实践指南 引言 在当今信息爆炸的时代&#xff0c;快速准确地获取所需信息变得越来越重要。DuckDuckGo作为一个注重隐私的搜索引擎&#xff0c;提供了强大的搜索API&#xff0c;让开发者能够轻松地将搜索功能集成到自…...

UE4_后期处理_后期处理材质四—场景物体描边

一、效果如下图&#xff1a; 二、分析&#xff1a; 回顾复习&#xff1a;在后期处理材质三中&#xff0c;我们通过计算开启自定义深度通道物体的像素点上下左右4个像素SceneTextureCustomDepth深度之和来判断物体的外部&#xff08;包含物体的边&#xff09;和内部&#xff0c…...

华为OD机试 - 推荐多样性(Python/JS/C/C++ 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华为OD刷题交流群&#xff0c;…...

梧桐数据库(WuTongDB):CBO(Cost-Based Optimizer)基于代价的优化器技术简介

CBO&#xff08;基于代价的优化器&#xff0c;Cost-Based Optimizer&#xff09;是现代数据库系统中最广泛使用的查询优化器之一。它通过计算执行查询时可能消耗的资源&#xff08;如CPU、内存、I/O&#xff09;来选择最优的执行计划&#xff0c;以提高查询性能。 1. CBO 的工…...

深入探索Go语言中的函数:匿名函数、指针参数与函数返回

1. Go语言中的函数 函数是任何编程语言中的核心元素&#xff0c;它们帮助我们将大型程序分解为更小的、易于管理的部分。在Go语言中&#xff0c;函数是通过 func 关键字定义的。理想的函数应当是独立的&#xff0c;完成单一任务。如果你发现某个函数正在执行多个任务&#xff…...

Android12_13左上角状态栏数字时间显示右移动

文章目录 问题场景解决问题 一、基础资料二、代码追踪三、解决方案布局的角度解决更改paddingStart 的默认值设置marginLeft 值 硬编码的角度解决 问题场景 1&#xff09;早期一般屏幕都是方形的&#xff0c;但是曲面屏&#xff0c;比如&#xff1a;好多车机Android产品、魔镜…...

望繁信科技携流程智能解决方案亮相CNDS 2024新能源产业数智峰会

9月13日&#xff0c;CNDS 2024中国新能源产业数智峰会在北京圆满落幕。本次峰会以“走向数字新能源”为主题&#xff0c;汇聚了来自新能源领域的顶尖领袖、专家学者及知名企业代表&#xff0c;共同探讨数字化技术在新能源行业中的创新应用和发展趋势。上海望繁信科技有限公司&a…...

nginx负载均衡(轮询与权重)

文章目录 1. nginx的介绍2. nginx使用场景3. nginx在windows的下载与安装4. nginx的简单使用5. nginx进行轮询测试6. nginx进行权重测试7. 总结 1. nginx的介绍 Nginx&#xff08;engine x&#xff09;是一个高性能的HTTP和反向代理web服务器&#xff0c;同时也是一个开源的、…...

【计算机网络】网络通信中的端口号

文章目录 一、引入端口号二、端口号的作用三、端口号的确定 在TCP/IP协议中&#xff0c;传输层有两个重要的协议&#xff1a;TCP&#xff08;传输控制协议&#xff09;和UDP&#xff08;用户数据报协议&#xff09;。TCP用于提供可靠的数据传输&#xff0c;而UDP则适合用于广播…...

Python 解析 JSON 数据

1、有如下 JSON 数据&#xff0c;存放在 data.json 文件&#xff1a; [{"id":1, "name": "小王", "gender": "male", "score": 96.8}, {"id":2, "name": "小婷", "gender&qu…...

利用LlamaIndex构建ARG本地知识库

文章目录 1. 环境准备2. 启用诊断日志3. 配置本地模型4. 配置本地向量模型5. LlamaIndex全局配置6. 创建 PGVectorStore7. 从数据库加载数据8. 文本分割器: SpacyTextSplitter9. 配置管道10. 创建向量存储索引11 .指定响应模式&#xff0c;以及启用流式响应 在现代的人工智能应…...

PCM的缺点

PCM的主要缺点包括需要较大的‌数据传输带宽和‌存储空间&#xff0c;导致无法实现‌高压缩比&#xff0c;相对较低的‌数据压缩效率。‌‌ PCM&#xff08;脉冲编码调制&#xff09;作为一种无损编码技术&#xff0c;虽然能够保留原始信号的完整性&#xff0c;适用于需要高保…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库&#xff0c;特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码&#xff0c;CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短&#xff0c;所以CPU会不断地切换线程执行&#xff0c;从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...

Ubuntu系统复制(U盘-电脑硬盘)

所需环境 电脑自带硬盘&#xff1a;1块 (1T) U盘1&#xff1a;Ubuntu系统引导盘&#xff08;用于“U盘2”复制到“电脑自带硬盘”&#xff09; U盘2&#xff1a;Ubuntu系统盘&#xff08;1T&#xff0c;用于被复制&#xff09; &#xff01;&#xff01;&#xff01;建议“电脑…...