python的视觉库学习 又名:学计算机视觉理论,做DEMO(第二天)

发布时间:2024年01月01日

python的视觉库学习

又名:学计算机视觉理论,做DEMO(第二天)

目录

  • 1.1.1 使用OpenCV显示图像
  • 1.1.2 使用Matplotlib显示图像
  • 1.2.1 使用OpenCV读取图像
  • 1.2.2 使用Matplotlib读取图像
  • 1.3.1 使用OpenCV保存图像
  • 1.3.2 使用Matplotlib保存图像
  • 第2章 OpenCV图像处理(1)
    • 2.1 图像模糊
      • 2.1.1 均值滤波
      • 2.1.2 中值滤波
      • 2.1.3 高斯滤波
      • 2.1.4 代码示例(均值滤波)
    • 2.2 图像锐化
      • 2.2.1 图像增强
      • 2.2.2 锐化滤波
      • 2.2.3 代码示例(锐化滤波)
  • 第3章 OpenCV图像处理(2)
    • 3.1 OpenCV绘图
      • 3.1.1 绘制直线
      • 3.1.2 绘制矩形
      • 3.1.3 绘制圆形
      • 3.1.4 代码示例(绘制直线)
    • 3.2 图像的几何变换
      • 3.2.1 平移变换
      • 3.2.2 缩放变换
      • 3.2.3 旋转变换
      • 3.2.4 仿射变换
      • 3.2.5 代码示例(平移变换)

1.1.1 使用OpenCV显示图像

概念和解释:

  • 概念:OpenCV是一个开源的计算机视觉库,可用于处理图像和视频。
  • 解释:这段代码演示了如何使用OpenCV读取图像并在窗口中显示它。
  • 使用场景:图像的显示通常用于图像处理和计算机视觉应用的可视化,以便观察和分析图像。
import cv2

# 读取图像
image = cv2.imread('image.jpg')

# 显示图像
cv2.imshow('Image', image)

# 等待用户按下任意键后关闭图像窗口
cv2.waitKey(0)
cv2.destroyAllWindows()

1.1.2 使用Matplotlib显示图像

概念和解释:

  • 概念:Matplotlib是一个用于创建图形和图表的Python库,也可用于显示图像。
  • 解释:这段代码演示了如何使用Matplotlib读取图像并在Matplotlib窗口中显示它。
  • 使用场景:Matplotlib通常用于绘制图表和图形,但也可用于图像的可视化和分析。
import matplotlib.pyplot as plt
import cv2

# 读取图像
image = cv2.imread('image.jpg')

# 将BGR图像转换为RGB图像以在Matplotlib中显示
image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

# 显示图像
plt.imshow(image_rgb)
plt.axis('off')  # 不显示坐标轴
plt.show()

1.2.1 使用OpenCV读取图像

概念和解释:

  • 概念:读取图像是将图像文件加载到内存中的过程。
  • 解释:这段代码演示了如何使用OpenCV读取图像文件并将其加载到内存中,以便进一步处理。
  • 使用场景:图像读取通常用于从存储设备中加载图像以进行分析、处理或修改。
import cv2

# 读取图像
image = cv2.imread('image.jpg')

# 在这里你可以对图像进行进一步的处理或分析

1.2.2 使用Matplotlib读取图像

概念和解释:

  • 概念:Matplotlib也可以用于图像的读取和显示,尤其在与其他图形和图表共同显示时。
  • 解释:这段代码演示了如何使用Matplotlib读取图像文件并将其加载到内存中,以便进一步处理。
  • 使用场景:Matplotlib的图像读取功能通常用于与其他图形和图表共同显示图像,以进行全面的可视化。
import matplotlib.pyplot as plt
import cv2

# 读取图像
image = cv2.imread('image.jpg')

# 将BGR图像转换为RGB图像以在Matplotlib中显示
image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

# 在这里你可以对图像进行进一步的处理或分析

1.3.1 使用OpenCV保存图像

概念和解释:

  • 概念:保存图像是将内存中的图像数据写入图像文件的过程。
  • 解释:这段代码演示了如何使用OpenCV保存图像数据到图像文件。
  • 使用场景:图像保存通常用于将分析、处理或修改后的图像保存到磁盘上,以备将来使用。
import cv2

# 读取图像
image = cv2.imread('image.jpg')

# 在这里对图像进行处理或分析

# 保存图像
cv2.imwrite('output.jpg', image)

1.3.2 使用Matplotlib保存图像

概念和解释:

  • 概念:Matplotlib可以用于保存显示在Matplotlib图形窗口中的图像。
  • 解释:这段代码演示了如何使用Matplotlib将图像保存为图像文件。
  • 使用场景:Matplotlib的图像保存功能通常用于将Matplotlib窗口中的图像保存为文件,以备将来使用或共享。
import matplotlib.pyplot as plt
import cv2

# 读取图像
image = cv2.imread('image.jpg')

# 在这里对图像进行进一步的处理或分析

# 保存图像
plt.imsave('output.png', cv2.cvtColor(image, cv2.COLOR_BGR2RGB))

以下是第2章和第3章的章节目录,主要应用场景和概念的代码示例:

第2章 OpenCV图像处理(1)

2.1 图像模糊

  • 概念: 图像模糊是一种图像处理技术,用于减少图像中的噪点和细节,从而使图像更平滑。它在图像处理中具有多种应用,如去除图像中的噪声,减少细节,以及为后续处理提供更好的基础。
  • 应用场景: 图像模糊常用于图像预处理,特别是在计算机视觉任务中,如目标检测和图像识别之前,以提高算法的性能。
  • 案例实现: 下面是一个使用OpenCV进行均值滤波的示例:
import cv2

# 读取图像
image = cv2.imread('input.jpg')

# 应用均值滤波
blurred_image = cv2.blur(image, (5, 5))

# 保存结果图像
cv2.imwrite('output_blurred.jpg', blurred_image)

2.2 图像锐化

  • 概念: 图像锐化是通过增强图像中的边缘和细节来提高图像的清晰度和对比度的图像处理技术。
  • 应用场景: 图像锐化通常用于增强图像的特征,例如在医学图像分析、卫星图像处理和数字摄影中。
  • 案例实现: 下面是一个使用OpenCV进行图像锐化的示例:
import cv2
import numpy as np

# 读取图像
image = cv2.imread('input.jpg')

# 创建卷积核
kernel = np.array([[-1, -1, -1],
                   [-1, 9, -1],
                   [-1, -1, -1]])

# 应用卷积核进行图像锐化
sharpened_image = cv2.filter2D(image, -1, kernel)

# 保存结果图像
cv2.imwrite('output_sharpened.jpg', sharpened_image)

第3章 OpenCV图像处理(2)

3.1 OpenCV绘图

  • 概念: OpenCV绘图是一种图像处理技术,用于在图像上绘制各种几何形状、文本和图像。它通常用于在图像上标记对象、绘制边界框和注释图像。
  • 应用场景: OpenCV绘图在计算机视觉任务中常用于可视化结果,如在目标检测中绘制检测框或在图像分析中标记关键点。
  • 案例实现: 下面是一个使用OpenCV绘制直线的示例:
import cv2
import numpy as np

# 创建一个黑色图像
image = np.zeros((512, 512, 3), dtype=np.uint8)

# 绘制一条红色直线
cv2.line(image, (0, 0), (511, 511), (0, 0, 255), 5)

# 保存结果图像
cv2.imwrite('output_line.jpg', image)

3.2 图像的几何变换

  • 概念: 图像的几何变换是通过对图像进行平移、旋转、缩放和仿射变换等操作来改变图像的形状和位置的技术。
  • 应用场景: 图像的几何变换常用于校正图像、纠正透视畸变、图像配准以及图像拼接等任务。
  • 案例实现: 下面是一个使用OpenCV进行图像平移的示例:
import cv2
import numpy as np

# 读取图像
image = cv2.imread('input.jpg')

# 定义平移矩阵
translation_matrix = np.float32([[1, 0, 100], [0, 1, 50]])

# 应用平移变换
translated_image = cv2.warpAffine(image, translation_matrix, (image.shape[1], image.shape[0]))

# 保存结果图像
cv2.imwrite('output_translation.jpg', translated_image)

理解了您的需求,我将为您生成关于图像模糊和使用OpenCV绘制各种图形的概念、使用场景和代码示例:

2.1 图像模糊

2.1.1 均值滤波

  • 概念: 均值滤波是一种图像模糊技术,它通过将像素的值替换为周围像素的平均值来减少图像中的噪声和细节,从而平滑图像。
  • 应用场景: 均值滤波常用于去除图像中的高频噪声,如在数字图像处理和图像传感器捕获后的图像预处理中。

2.1.2 中值滤波

  • 概念: 中值滤波是一种非线性滤波技术,它通过用像素值的中值替换每个像素的值来减少图像中的噪声,特别适用于椒盐噪声。
  • 应用场景: 中值滤波常用于去除图像中的脉冲噪声,如在医学图像处理和图像复原中。

2.1.3 高斯滤波

  • 概念: 高斯滤波是一种线性滤波技术,它使用高斯函数作为权重来平滑图像,使得离中心像素较远的像素具有较低的权重。
  • 应用场景: 高斯滤波常用于平滑图像并保留图像的整体结构,如在图像增强和特征提取中。

2.1.4 代码示例(均值滤波)

import cv2

# 读取图像
image = cv2.imread('input.jpg')

# 应用均值滤波
blurred_image = cv2.blur(image, (5, 5))

# 保存结果图像
cv2.imwrite('output_blurred.jpg', blurred_image)

使用OpenCV绘制各种图形

概念:

使用OpenCV绘制各种图形是一种图像处理技术,通过在图像上绘制不同形状的线条、多边形、文本等来标记对象、绘制边界框和注释图像。

应用场景:

  • 在计算机视觉中,常用于可视化结果,如在目标检测中绘制检测框、在图像分析中标记关键点以及在医学图像中标记病变区域。
  • 在图像处理任务中,用于创建测试图像、生成图形验证码等。

代码示例(绘制一条红色直线)

import cv2
import numpy as np

# 创建一个黑色图像
image = np.zeros((512, 512, 3), dtype=np.uint8)

# 绘制一条红色直线
cv2.line(image, (0, 0), (511, 511), (0, 0, 255), 5)

# 保存结果图像
cv2.imwrite('output_line.jpg', image)

以上是关于图像模糊和使用OpenCV绘制各种图形的概念、应用场景和代码示例。喜欢的话, 请一键三连,让我做更多这类的边学边做系列

文章来源:https://blog.csdn.net/lixiemang8887/article/details/135281009
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。