Python中的图像处理

2025年1月5日 | 阅读6分钟

图像处理是一个改变数字图像以获得有见地的见解、增强视觉效果或允许计算机化分析的过程。处理、分析和从可见数据中提取深刻见解现在对 Python 来说是可行的,Python 已发展成为一种现代工具。Python 图像处理改变了我们处理视觉信息的方式,并为包括科学成像和自动驾驶汽车在内的各种行业开启了新的可能性。许多 Python 库,包括 scikit-image、OpenCV 和 PIL(现为 Pillow),为各种图像处理任务提供了卓越的灵活性和易用性。

本文全面概述了图像处理,涵盖了其基本概念、应用、重要性、Python 实现以及更多内容。

图像处理简介

包括计算机视觉和数据分析在内的越来越多的领域使用图像处理。它是使用计算机操纵和分析图像的过程。它涉及在数字图像上应用各种算法和技术以达到特定目标。其广泛的应用包括但不限于自动驾驶汽车、对象检测和人脸识别。

图像处理是将数字图像数字化并进行转换,以便提取有用的信息。该过程很复杂,包含一些技术,例如压缩、分割、识别、恢复和图像增强。增强图像、消除噪声以及检索有用信息以供进一步研究是图像处理的最终目标。这项技术被广泛应用于许多不同的领域,包括计算机视觉、机器人、遥感和医学成像。处理图像的能力对于处理海量视觉数据的专家和研究人员至关重要,这促成了更先进的算法和机器学习技术。

除了 Python,C++ 和 Java 也支持图像处理。由于 Python 提供了简单易读的语法,使其成为最兼容的编程语言。它提供了许多库

  • OpenCV:该库在计算机视觉、机器学习和图像处理方面非常有用。它有助于处理图像,以便机器可以识别对象、人脸、数字、手写体等。
  • Python Imaging Library:该库用于处理图像并使用各种功能增强其结构。
  • Scikit-Image:它提供了大量的图像处理算法。
  • Numpy 和 Scipy:它还允许操纵和处理图像。

现在,我们知道了什么是图像处理。但问题是,什么是图像?

由二维行和列组成的像素数组或矩阵称为图像。行和列坐标允许图像中的每个像素在矩阵中唯一地识别到特定位置。每个像素的色调、饱和度和亮度由其值决定,该值通常用 RGB(红、绿、蓝)等颜色代码表示。图像的分辨率由每单位长度或面积的像素数决定,而图像的大小由矩阵中的行数和列数决定。

Image Processing in Python

让我们在 Python 中实现图像处理及其不同概念

OpenCV 用于图像处理

我们必须先使用 pip 命令进行安装

1. 上传和显示图像

输出

Image Processing in Python

这是图像处理中的基本操作。imread() 函数用于从其目录或路径读取图像。imshow() 函数有助于显示图像。cv2 库(OpenCV 的高级版本)提供了更多功能,包括 waitkey(),它指定在屏幕上显示图像之前等待的时间,以及 destroyAllWindows(),它在显示图像后清除屏幕。

2. 模糊图像

输出

Image Processing in Python
Image Processing in Python

本节介绍如何模糊图像。首先,我们将使用 imread() 函数读取图像。GaussianBlur() 函数与必须为奇数的 Gaussian 核的高度和宽度一起用于模糊图像。然后,使用 imshow() 函数显示模糊的图像。

3. 调整图像大小和旋转

输出

Image Processing in Python

此代码有助于调整图片大小和旋转。resize() 函数允许调整图像大小。通过图像旋转的尺寸和坐标创建旋转矩阵。然后使用 wrapAffine() 方法,该方法旋转照片。我们使用 matplotlib.Pyplot 库的 subplots() 绘制了原始、调整大小和旋转后的图像。

4. 灰度图像

输出

Image Processing in Python

本节将帮助您将图像颜色更改为灰度。cv2 库提供的带有 IMREAD_GRAYSCALE 参数的 imread() 用于读取灰度图像。使用 imshow() 函数显示灰度图像。

5. 在图像上绘制线条

输出

Image Processing in Python

此代码有助于在图像上绘图或书写。使用 cmap 和 interpolation 属性,我们可以修改图像。然后,使用 plot 函数在特定坐标的图像上添加粗红线。

6. 图像平移

输出

Image Processing in Python

此代码将提供图像平移的指南和过程,即图像从一个位置到另一个位置的直线移动。我们分配了输出图像的高度和宽度,并使用 wrapAffine() 特性移动了图像。绘制了原始图像和平移图像的图。

7. 显示图像边缘

输出

Image Processing in Python

在此代码片段中,我们高亮显示了照片的边缘。cv2 库提供了 Canny() 函数,该函数突出显示图像的边界。

Canny 边缘检测算法利用图像像素的梯度来识别图像中的边缘。使用高斯滤波器平滑图像。接下来,计算每个像素沿其路径的梯度值。然后使用非最大值抑制来细化边缘。最后,应用滞后阈值来识别最终的边缘集。

结论

Python 不仅能处理图片,还能让用户用它们创造出令人惊叹的东西。Python 可用于控制、装饰和理解图像。喜欢图片和技术的人可以使用 OpenCV、Pillow 和 scikit-image 等工具做很多事情,从提高图像质量到教会计算机进行识别。