使用openCV进行图像处理

使用 openCV进行图像处理

使用 openCV进行图像处理,又名:学习计算机视觉理论,做 demo(第3 天)

目录

  • 2.1 图像模糊
    • 2.1.1 均值滤波
    • 2.1.2 中值滤波
    • 2.1.3 高斯滤波
    • 2.1.4 案例实现
  • 2.2 图像锐化
    • 2.2.1 图像锐化简介
    • 2.2.2 案例实现
  • 3.1 OpenCV绘图
    • 3.1.1 使用OpenCV绘制各种图形
    • 3.1.2 案例实现
  • 3.2 图像的几何变换
    • 3.2.1 几何变换操作
    • 3.2.2 案例实现
  • 案例练习

2.1 图像模糊

2.1.1 均值滤波

概念:均值滤波是一种图像模糊技术,它通过取像素周围邻域的平均值来减小图像中的噪声和细节,从而产生平滑的效果。在均值滤波中,将一个像素周围的邻域的灰度值取平均,然后用这个平均值来替代原像素的值。

使用场景:均值滤波常用于去除图像中的高频噪声,例如盐噪声和椒噪声。它也可以用于平滑图像以减小细节,例如在图像压缩中。

用例代码:

import cv2
import numpy as np# 读取图像
image = cv2.imread('input.jpg')# 使用均值滤波
kernel_size = (5, 5)
blurred_image = cv2.blur(image, kernel_size)# 保存结果
cv2.imwrite('output_blurred.jpg', blurred_image)

2.1.2 中值滤波

概念:中值滤波是一种非线性滤波方法,它通过取像素周围邻域的中值来减小图像中的噪声,特别适用于去除椒盐噪声。中值滤波不会改变图像中的边缘信息。

使用场景:中值滤波通常用于去除图像中的椒盐噪声或脉冲噪声,因为它能够有效地保留图像中的细节。

用例代码:

import cv2# 读取图像
image = cv2.imread('input.jpg')# 使用中值滤波
kernel_size = 3
median_blurred_image = cv2.medianBlur(image, kernel_size)# 保存结果
cv2.imwrite('output_median_blurred.jpg', median_blurred_image)

2.1.3 高斯滤波

概念:高斯滤波是一种线性滤波技术,它使用高斯函数来加权平均像素值,以减小图像中的噪声并实现平滑效果。高斯滤波在处理噪声时,通常能够保留更多的图像细节。

使用场景:高斯滤波常用于图像去噪、平滑和边缘保留。它适用于大多数图像处理任务,特别是当噪声的分布近似于高斯分布时。

用例代码:

import cv2# 读取图像
image = cv2.imread('input.jpg')# 使用高斯滤波
kernel_size = (5, 5)
sigma = 1.0
gaussian_blurred_image = cv2.GaussianBlur(image, kernel_size, sigma)# 保存结果
cv2.imwrite('output_gaussian_blurred.jpg', gaussian_blurred_image)

2.1.4 案例实现

在这一部分,我们将结合上述三种图像模糊方法来实现一个图像去噪的示例。假设我们有一张带有椒盐噪声的图像,我们可以先使用中值滤波去除椒盐噪声,然后再使用高斯滤波平滑图像。

用例代码:

import cv2# 读取图像
image = cv2.imread('input_noisy.jpg')# 使用中值滤波去除椒盐噪声
kernel_size = 3
median_blurred_image = cv2.medianBlur(image, kernel_size)# 使用高斯滤波平滑图像
kernel_size = (5, 5)
sigma = 1.0
final_blurred_image = cv2.GaussianBlur(median_blurred_image, kernel_size, sigma)# 保存结果
cv2.imwrite('output_denoised.jpg', final_blurred_image)

2.2 图像锐化

2.2.1 图像锐化简介

概念:图像锐化是一种增强图像细节和边缘的图像处理技术。它通过增加像素值的差异来提高图像的对比度,使图像中的边缘和细节更加突出。

2.2.2 案例实现

在这一部分,我们将实现一个图像锐化的示例,使用卷积核(例如拉普拉斯算子)来增强图像的边缘。

用例代码:

import cv2
import numpy as np# 读取图像
image = cv2.imread('input.jpg')# 创建拉普拉斯卷积核
laplacian_kernel = np.array([[0, 1, 0],[1, -4, 1],[0, 1, 0]], dtype=np.float32)# 使用卷积操作进行图像锐化
sharpened_image = cv2.filter2D(image, -1, laplacian_kernel)# 保存结果
cv2.imwrite('output_sharpened.jpg', sharpened_image)

算法解释:

在算法层面对图像模糊和图像锐化的方法进行解释:

2.1 图像模糊

2.1.1 均值滤波算法解释

均值滤波的算法非常简单,它通过取像素周围一个固定大小的邻域内像素值的平均值来模糊图像。具体步骤如下:

  1. 选取一个固定大小的滤波核(通常是一个矩形或正方形的窗口),核的大小由用户指定。
  2. 将滤波核的中心对准图像中的每个像素点。
  3. 对于每个像素点,将滤波核覆盖的区域内的像素值求平均,并用这个平均值来替代原始像素的值。
  4. 重复步骤2和步骤3,直到对图像的所有像素都进行了处理。

均值滤波对图像进行平滑处理,减小了噪声和细节,适用于去除盐噪声和椒噪声等高频噪声。

2.1.2 中值滤波算法解释

中值滤波是一种非线性滤波方法,它的算法如下:

  1. 选取一个固定大小的滤波核(通常是一个正方形窗口),核的大小由用户指定。
  2. 将滤波核的中心对准图像中的每个像素点。
  3. 对于每个像素点,将滤波核覆盖的区域内的像素值排序,然后取中间值(中位数)作为该像素的新值。
  4. 重复步骤2和步骤3,直到对图像的所有像素都进行了处理。

中值滤波特别适用于去除椒盐噪声,因为中位数不受极端值的干扰,能够有效地保留图像细节。

2.1.3 高斯滤波算法解释

高斯滤波使用高斯函数来加权平均像素值,以实现图像的模糊。其算法如下:

  1. 选取一个固定大小的滤波核(通常是一个正方形窗口),核的大小和一个标准差参数(sigma)由用户指定。
  2. 将滤波核的中心对准图像中的每个像素点。
  3. 对于每个像素点,将滤波核覆盖的区域内的像素值按照高斯函数的权重进行加权平均,得到新的像素值。
  4. 重复步骤2和步骤3,直到对图像的所有像素都进行了处理。

高斯滤波可以用于图像去噪和平滑,它在处理噪声时通常能够保留更多的图像细节。

2.2 图像锐化

2.2.1 图像锐化算法解释

图像锐化是一种增强图像细节和边缘的图像处理技术。其中一种常见的算法是使用拉普拉斯算子进行卷积操作,其算法如下:

  1. 创建一个特定的卷积核,通常是一个3x3的矩阵,其中心值为-4,周围的8个值为1。
  2. 将这个卷积核对准图像中的每个像素点。
  3. 对于每个像素点,将卷积核覆盖的区域内的像素值与卷积核的对应元素相乘,并将所有结果相加得到新的像素值。
  4. 重复步骤2和步骤3,直到对图像的所有像素都进行了处理。

拉普拉斯算子的卷积操作会增加像素值的差异,从而提高了图像的对比度,使边缘和细节更加突出。

总之,图像模糊方法通过修改像素值以减小图像中的噪声和细节,而图像锐化方法则通过增加像素值的差异来提高图像的对比度,从而增强边缘和细节。每种方法都有其适用的场景和算法特点。

总结

我们学习了图像处理中的图像模糊和图像锐化技术。图像模糊包括均值滤波、中值滤波和高斯滤波,它们分别适用于不同的噪声去除和平滑需求。图像锐化用于增强图像的边缘和细节。通过实例代码,我们展示了如何应用这些技术来处理图像。

3.1 OpenCV绘图

3.1.1 使用OpenCV绘制各种图形

概念: 使用OpenCV绘制各种图形是一种图像处理技术,它允许您在图像上绘制不同类型的几何图形,如线条、矩形、圆形、多边形等。这些绘图功能可用于在图像上添加标记、边框、区域等信息。

使用场景: 绘制各种图形常用于图像处理和计算机视觉应用中,例如:

  • 在物体检测或跟踪中标记物体的位置和边界框。
  • 在图像分类中为不同类别的图像添加标签。
  • 在图像分析中标记感兴趣的区域或特征点。

算法解释: OpenCV提供了一组绘图函数,用于绘制各种图形。这些函数通常接受图像、要绘制的图形类型、起始坐标、颜色、线条宽度等参数,并在图像上绘制指定的图形。例如,使用cv2.line()函数可以绘制直线,使用cv2.rectangle()函数可以绘制矩形,使用cv2.circle()函数可以绘制圆形等。

3.1.2 案例实现

在这一部分,我们将结合前面学到的绘图技巧来实现一个案例,例如在一张图像中绘制多个不同形状的对象。以下是一个示例代码:

import cv2
import numpy as np# 创建一张空白图像
image = np.zeros((400, 400, 3), dtype=np.uint8)# 绘制一个绿色圆形
cv2.circle(image, (200, 150), 50, (0, 255, 0), -1)# 绘制一个黄色矩形
cv2.rectangle(image, (100, 200), (300, 300), (0, 255, 255), -1)# 绘制一个蓝色多边形
pts = np.array([[50, 350], [150, 250], [250, 350]], np.int32)
cv2.polylines(image, [pts], isClosed=True, color=(255, 0, 0), thickness=3)# 保存结果
cv2.imwrite('output_draw_shapes_example.jpg', image)

3.2 图像的几何变换

3.2.1 几何变换操作

概念: 图像的几何变换操作是一种图像处理技术,它允许您对图像进行平移、旋转、缩放、翻转等操作,以改变图像的大小、位置和方向。

使用场景: 几何变换常用于图像处理和计算机视觉中的以下情况:

  • 图像配准:将不同角度或位置的图像对齐,以便进行特征匹配或图像融合。
  • 图像增强:改变图像的大小、方向或形状,以突出感兴趣的特征。
  • 图像校正:校正图像中的透视畸变或投影变换,使对象呈现真实的几何形状。

算法解释: 几何变换操作通常涉及到矩阵变换,其中包括平移、旋转、缩放和翻转等。这些变换可以通过矩阵乘法来应用到图像的像素坐标上,从而实现图像的几何变换。在OpenCV中,常用的几何变换函数包括cv2.warpAffine()cv2.warpPerspective(),它们可以用来实现平移、旋转、缩放和透视变换。

案例代码: 下面是一个示例代码,演示如何使用OpenCV对图像进行平移、旋转和缩放操作:

import cv2
import numpy as np# 读取图像
image = cv2.imread('input.jpg')# 获取图像尺寸
height, width = image.shape[:2]# 定义平移矩阵
tx, ty = 50, 30
translation_matrix = np.float32([[1, 0, tx],[0, 1, ty]])# 使用平移矩阵进行平移操作
translated_image = cv2.warpAffine(image, translation_matrix, (width, height))# 定义旋转矩阵
angle = 45
rotation_matrix = cv2.getRotationMatrix2D((width // 2, height // 2), angle, 1)# 使用旋转矩阵进行旋转操作
rotated_image = cv2.warpAffine(translated_image, rotation_matrix, (width, height))# 定义缩放矩阵
scale_factor = 1.5
scaling_matrix = np.float32([[scale_factor, 0, 0],[0, scale_factor, 0]])# 使用缩放矩阵进行缩放操作
scaled_image = cv2.warpAffine(rotated_image, scaling_matrix, (width, height))# 保存结果
cv2.imwrite('output_geometric_transformations.jpg', scaled_image)

以上代码演示了平移、旋转和缩放操作,可以根据具体需求组合使用不同的几何变换来实现图像的变换和增强。

案例练习:

数据可以从:

  1. Kaggle:Kaggle提供了各种医学图像数据集,您可以在这里找到不同类型的X射线图像、MRI图像等。
  2. NIH Clinical Center:美国国立卫生研究院(NIH)提供了一些公共的医学图像数据集,适用于研究和测试。
  3. Radiological Society of North America (RSNA):RSNA也提供了一些医学图像数据集,尤其是关于放射学的图像。

案例:肺部X射线图像处理

要求:对它进行标记病变位置,突出病变图像

求解思路:

  1. 去噪处理: 由于X射线图像常常受到噪声的影响,首先需要使用图像模糊技术,如高斯滤波,来减小噪声并平滑图像。
  2. 边缘检测: 在图像中检测肺部的轮廓和可能的病变区域,您可以使用边缘检测技术,如Canny边缘检测。
  3. 图像增强: 对于一些特定的区域或病变,您可能希望突出显示,以便医生更容易诊断。这可以通过增强图像的部分区域来实现,例如使用对比度增强技术。
  4. 标记病变: 如果发现了可能的病变区域,您可以使用图像绘制技术,在图像上标记出这些区域,以供医生进一步研究。
  5. 几何变换: 在某些情况下,您可能需要调整图像的大小、位置或方向,以便更好地显示特定区域。

示例:

import cv2
import numpy as np# 1. 读取肺部X射线图像
image = cv2.imread('chest_xray.jpg')# 2. 去噪处理:使用高斯滤波
kernel_size = (5, 5)
sigma = 1.0
blurred_image = cv2.GaussianBlur(image, kernel_size, sigma)# 3. 边缘检测:使用Canny边缘检测
edges = cv2.Canny(blurred_image, threshold1=30, threshold2=70)# 4. 图像增强:对比度增强
enhanced_image = cv2.convertScaleAbs(blurred_image, alpha=2.0, beta=0)# 5. 标记病变:在边缘图上标记病变区域
contours, _ = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for contour in contours:cv2.drawContours(enhanced_image, [contour], -1, (0, 0, 255), 2)# 6. 几何变换:例如,可以进行平移、旋转或缩放操作# 7. 保存处理后的图像
cv2.imwrite('processed_chest_xray.jpg', enhanced_image)

代码解释(第一次就详细点,后续的我只用加注释的代码, 其他的你们需要查 API, 怎么查 API 我会贴在最后)

当您需要对一张肺部X射线图像进行处理时,通常需要执行一系列图像处理步骤。下面是对上述Python代码的解释,这个代码模拟了处理肺部X射线图像的过程:

  1. 导入必要的库:
import cv2
import numpy as np

在这里,我们导入了OpenCV(cv2)用于图像处理,以及NumPy(numpy)用于处理数组和矩阵。

  1. 读取肺部X射线图像:
image = cv2.imread('chest_xray.jpg')

这一行代码用于读取名为’chest_xray.jpg’的肺部X射线图像。

  1. 去噪处理(高斯滤波):
kernel_size = (5, 5)
sigma = 1.0
blurred_image = cv2.GaussianBlur(image, kernel_size, sigma)

通过高斯滤波,我们减小了图像的噪声并使其平滑化。kernel_size定义了滤波核的大小,sigma是高斯分布的标准差,用于调整滤波效果。

  1. 边缘检测(Canny边缘检测):
edges = cv2.Canny(blurred_image, threshold1=30, threshold2=70)

使用Canny边缘检测算法,我们检测了图像中的边缘,创建了一个二值图像,其中边缘以白色表示。

  1. 图像增强(对比度增强):
enhanced_image = cv2.convertScaleAbs(blurred_image, alpha=2.0, beta=0)

这里我们增强了图像的对比度,使得图像中的特征更加突出。alpha参数控制对比度的倍数,beta参数控制亮度偏移。

  1. 标记病变(在边缘图上标记病变区域):
contours, _ = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for contour in contours:cv2.drawContours(enhanced_image, [contour], -1, (0, 0, 255), 2)

在这一步,我们找到了边缘图中的轮廓,并在原始图像上标记了这些轮廓,以便医生进一步研究。

contours, _ = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) 这一行代码使用了OpenCV的 cv2.findContours() 函数来寻找图像中的轮廓。下面是每个参数的含义:

  1. edges:这是输入的二值化图像,通常是经过边缘检测后的图像,其中边缘以白色表示。
  2. cv2.RETR_EXTERNAL:这是轮廓检索模式的参数。cv2.RETR_EXTERNAL 表示仅检测外部轮廓,即不包括内部的孔或洞。这在一般情况下用于找到图像中的主要轮廓。
  3. cv2.CHAIN_APPROX_SIMPLE:这是轮廓近似方法的参数。cv2.CHAIN_APPROX_SIMPLE 表示对轮廓进行简化,只保留轮廓的端点信息,以节省内存空间。这在一般情况下足够用于轮廓绘制。

函数的返回值是一个包含轮廓信息的列表 contours,以及一个层次信息的列表,但在这里我们使用 _ 表示我们不关心层次信息,因此将其忽略。 contours 列表中的每个元素都是一个包含轮廓点坐标的数组,您可以在后续的步骤中使用这些坐标来绘制或分析轮廓。

  1. 几何变换:
    在这个示例中,没有具体的几何变换,但您可以在这里添加平移、旋转或缩放等操作,以更好地显示特定区域。
  2. 保存处理后的图像:
cv2.imwrite('processed_chest_xray.jpg', enhanced_image)

最后,我们保存处理后的图像为’processed_chest_xray.jpg’。

这个代码示例演示了处理肺部X射线图像的一般步骤,包括去噪、边缘检测、图像增强、图像绘制等。实际应用中,您可以根据具体需求和医学专家的建议进行更多的图像处理和分析。

查阅 API:

要查阅OpenCV的API文档,您可以参考以下步骤:

  1. 官方网站: OpenCV的官方网站提供了最全面的文档和资源。您可以访问OpenCV官方网站:OpenCV官方网站,然后点击 “Documentation” 或 “Docs” 链接,以查看API文档和其他文档资源。
  2. 官方文档: 在OpenCV官方文档页面,您可以找到各种版本的文档,包括C++和Python等不同语言的文档。选择您使用的编程语言版本,然后浏览各种模块和函数的文档。
  3. 在线搜索引擎: 您可以使用在线搜索引擎,如Google,来查找特定的OpenCV函数或模块。通常,搜索 “OpenCV” 加上您感兴趣的函数或主题的关键词,例如 “OpenCV cv2.imread documentation”,将会带您直接到相关的API文档页面。
  4. 本地文档: 如果您已经在本地安装了OpenCV库,您可以在本地查阅API文档。在OpenCV的安装目录下,通常会有一个名为 “docs” 或 “doc” 的文件夹,其中包含了各种格式的文档,包括HTML和PDF格式。您可以打开这些文档并浏览API参考。
  5. 编辑器中: 例如 pycharm, 是最推荐的方式, 编辑器碰到这个函数的时候会弹出相关信息, 虽然是英文,但是需要你耐着性子看完,这个练习好,比较有用。

在API文档中,您将找到关于OpenCV库的详细信息,包括函数的参数、返回值、用法示例和示例代码。这些文档对于了解如何使用OpenCV的不同功能非常有帮助。

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

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

相关文章

Spring依赖注入的魔法:深入DI的实现原理【beans 五】

欢迎来到我的博客,代码的世界里,每一行都是一个故事 Spring依赖注入的魔法:深入DI的实现原理【beans 五】 前言DI的基本概念基本概念:为什么使用依赖注入: 构造器注入构造器注入的基本概念:示例&#xff1a…

laravel-admin之 浏览器自动填充密码(如果需要渲染数据库密码的话,首先确认数据库密码是否可以逆向解密)

参考 https://blog.51cto.com/u_10401840/5180106 为什么浏览器端保存的密码一直自动写入到$form->password 解决办法 2、在页面进入的时候,默认表单的type值为text;推荐指数:2颗星 5、设置表单的readonly属性;推荐指数:4颗…

实习遇到问题备忘录

1.Hutool工具包的DB Hutool学习 —— 数据库 - db (一)Db简单操作 - 简书 (jianshu.com) 2.Consumer函数接口 Java 常用函数式接口之Consumer接口 - LeeHua - 博客园 (cnblogs.com) 3.sql高级用法merge into SQL高级知识——MERGE INTO - 知乎 (zhi…

Linux 上 Nginx 配置访问 web 服务器及配置 https 访问配置过程记录

目录 一、前言说明二、配置思路三、开始修改配置四、结尾 一、前言说明 最近自己搭建了个 Blog 网站,想把网站部署到服务器上面,本文记录一下搭建过程中 Nginx 配置请求转发的过程。 二、配置思路 web项目已经在服务器上面运行起来了,运行的端…

222.【2023年华为OD机试真题(C卷)】分配土地(扫描线算法-JavaPythonC++JS实现)

🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目-分配土地二.解题思路三.题解代码Python题解代码…

FineBI:简介

1 介绍 FineBI 是帆软软件有限公司推出的一款商业智能(Business Intelligence)产品。 FineBI 是定位于自助大数据分析的 BI 工具,能够帮助企业的业务人员和数据分析师,开展以问题导向的探索式分析。 2 现阶段数据分析弊端 现阶…

广义零样本学习综述的笔记

1 Title A Review of Generalized Zero-Shot Learning Methods(Farhad Pourpanah; Moloud Abdar; Yuxuan Luo; Xinlei Zhou; Ran Wang; Chee Peng Lim)【IEEE Transactions on Pattern Analysis and Machine Intelligence 2022】 2 conclusion Generali…

【DevOps-05】Integrate工具

一、简要说明 持续集成、持续部署的工具很多,其中Jenkins是一个开源的持续集成平台。 Jenkins涉及到将编写完毕的代码发布到测试环境和生产环境的任务,并且还涉及到了构建项目等任务。 Jenkins需要大量的插件保证工作,安装成本较高,下面会基于Docker搭建Jenkins。 二、Jenk…

HPM6750开发笔记《DMA接收和发送数据UART例程深度解析》

目录 概述: 端口设置: 代码分析: 运行现象: 概述: DMA(Direct Memory Access)是一种计算机系统中的数据传输技术,它允许数据在不经过中央处理器(CPU)的直…

Vue2:修改默认配置的方法

一、前情概要 之前我们说到,用vue-cli创建vue项目之后,项目结构大概是这样的。其中,标红部分的文件是非常重要的结构文件,不建议修改文件名。 但是,实际上了,vue是允许修改的。 准备配置文件:v…

软件测试|使用PyMySQL访问MySQL数据库的详细指南

简介 PyMySQL是Python中流行的MySQL数据库驱动程序,它提供了便捷的方法来连接、查询和更新MySQL数据库。本文将为您提供使用PyMySQL访问MySQL数据库的详细指南,包括安装PyMySQL、连接数据库、执行查询和更新操作等。 环境准备 在开始之前,…

编译原理笔记(三)

一、词法分析程序的设计 1、词法分析程序的输出 在识别出下一个单词同时验证其词法正确性之后,词法分析程序将结果以单词符号的形式发送至语法分析程序以回应其请求。 单词符号一般分下列5类: 关键字:如:begin、end、if、whil…

双变量probit模型

1. Probit模型 1.1 模型含义 假设个体只有两种选择,y1或y0。影响选择的变量都包括在向量x中。即线性概率模型为 y值服从两点分布 被认为是连接函数,函数选择具有一定的灵活性。如果为标准正态的累积分布函数,则模型成为Probit模型&#xff…

NACHI机器人模拟示教器如何切换中文

前言 现在开始学习机器人的编程语言,那么要学习会用首先得用模拟示教器来学习,但是全是英文确实比较难受一些些,没有中文来的直观。所以摸透一下如何给示教器更换语言。 具体步骤 步骤一:将中文的汉化包下载下来。具体的下载链…

Spring AOP—通知类型 和 切入点表达式 万字详解(通俗易懂)

目录 一、前言 二、AOP—快速入门 1.动态代理优化 : 2.问题分析 : 3.AOP—基本介绍 : 4.AOP—使用说明 : 5.AOP—入门案例 : 三、AOP—切入点表达式 1.基本说明 : 2.语法格式 : 3.注意事项 : 4.代码演示 : 四、AOP—切入点表达式的更多细节 1.JoinPoint : 1.1 简…

华为HCIE课堂笔记第十三章 IPv6地址配置

目录 第十三章 IPv6地址配置 13.1 IPv6地址无状态自动配置 13.1.1 RS和RA报文格式 13.1.2 RA的Flags字段 13.1.3 地址的生存周期 13.1.4 RA报文中前缀中的Flags 13.2 DHCPv6 13.2.1 DHCPV6的概念 13.2.2 DCHPv6的报文 第十三章 IPv6地址配置 13.1 IPv6地址无状态自动…

ENVI无法打开Landsat8的头文件问题和解决

问题 解决方案 双击打开该xxx_MTL.txt的头文件 第一行GROUP LANDSAT_METADATA_FILE 改为 GROUP L1_METADATA_FILE 按住CTRLF,查找GROUP LEVEL1_PROCESSING_RECORD 会查到两个包含的句子,把这两个中间的部分全部删掉 删除空行后,应该为…

基于Python+Django,开发一款房屋租赁系统

学习文档 学习过程中,遇到问题可以咨询作者 功能介绍 平台采用B/S结构,后端采用主流的PythonDjango进行开发,前端采用主流的Vue.js进行开发。 整个平台包括前台和后台两个部分。 前台功能包括:首页、房屋详情页、用户中心模块。…

学习使用js/jquery获取指定class名称的三种方式

学习使用js/jquery获取指定class名称的三种方式 简介一、获取元素的class名称1、通过原生JS获取元素的class名称2、通过Jquery获取元素的class名称 二、应用1、样式修改2、动画效果实现 简介 在开发网页时,我们经常需要通过JS获取元素的class名称进行一些操作&…

IMU用于无人机故障诊断

最近,来自韩国的研究团队通过开发以IMU为中心的数据驱动诊断方法,旨在多旋翼飞行器可以自我评估其性能,即时识别和解决推进故障。该方法从单纯的常规目视检查跃升为复杂的诊断细微差别,标志着无人机维护的范式转变。 与依赖额外传…