Python | OpenCV 中的图像滤镜

17 Mar 2025 | 4 分钟阅读

在本教程中,我们将学习如何使用 Python 对给定图像应用滤镜。为此,我们将使用 OpenCV 模块。图像具有各种缩放、对比度、位深度和质量。互联网上有数百万种不同类型的图像,出于特定原因操纵这些图像可能会带来一些令人兴奋的结果。Python 提供了 OpenCV 模块来对图像执行各种操作。我们将开发一个简单的图像滤镜应用程序,负责修改特定图像的亮度和对比度。

图像处理和计算机视觉需要在各种任务中操纵图像以实现期望的结果。它涉及对图像执行任务以创建修改后的版本,这些版本可用于数据增强等任务,而数据增强对于计算机视觉和深度学习应用程序非常重要。

如果您需要更熟悉 OpenCV 库,您可以从我们的 Python opencv 教程中学习。

让我们从入门代码开始。

开始使用 OpenCv

本节将检查入门代码,它将帮助我们熟悉基本的图像过滤。使用 OpenCV 库,我们将调整原始图像的亮度和对比度。为此,我们将采用一个样本图像来分析和理解基本工作原理。

我们将一个名为 sample_image 的图像保存在工作目录中。唯一重要的步骤是在读取图片时提及适当的名称及其各自的格式。

首先,我们将使用以下命令安装 OpenCV 模块。

安装完成后,我们导入 opencv 模块以确保我们的安装成功。

一旦库完全正常运行,我们将读取最近保存在工作目录中的图像。cv2 模块提供 cv2.imread() 函数来读取图像;我们必须将图像名称作为参数传递。

在上面的代码中,我们定义了 alpha 和 gamma 参数,它们将分别用作对比度和亮度修改器。这两个参数将有助于增加或减少图像质量。需要记住的一点是;我们可以将对比度参数范围定义为 0 到 127,而亮度参数可以超过 0 到 100。

在此之后,我们将使用 OpenCV 库的 addWeighted 函数,该函数帮助我们相应地计算 alpha 和 gamma(亮度和对比度值)。此方法将帮助我们使用 alpha、beta 和 gamma 值混合图像。使用单个图像,我们可以通过将 beta 值设置为零来获得期望的结果。


Image Filter with Python | OpenCV

当我们执行给定的入门代码示例时,alpha 参数代表对比度,gamma 参数充当亮度修改器。虽然调整这些参数可以产生各种效果,但为每个图像变体手动修改它们可能不切实际。因此,更可行的方法是开发图形用户界面 (GUI),并为所需图像滤镜的每个参数确定最佳值。

我们将扩展我们的项目,并创建一个结合了 OpenCV 和 GUI 的应用程序,以优化亮度和对比度参数并调整图像结果。

亮度和对比度控制应用程序

我们可以为本节遵循上一节提到的初始步骤。首先,我们需要导入 OpenCV 库,加载相关图像,并将其调整为所需的尺寸。此过程的代码片段如下。请注意,您可以根据您的具体需求调整图像大小。

示例 -

下一步是创建一个函数来调整图像的亮度和对比度。该函数将使用 OpenCV 库的 getTrackbarPos() 函数来检索亮度和对比度元素的当前位置。addWeighted() 函数将用于计算这两个元素的组合输出,以达到期望的效果。下面的代码块演示了此过程。

定义滑块函数后,下一步是创建一个命名窗口和滑块来调整所需的参数。我们将设计两个滑块,一个用于亮度,另一个用于对比度,如下面的代码块所示。waitKey() 函数将在原始图像窗口和滑块窗口都关闭后终止程序。

Image Filter with Python | OpenCV

要调整图像的亮度和对比度,我们可以修改亮度滑块和对比度滑块的位置,将值范围分别更改为 0 到 10 和 0 到 20。通过调整滑块的位置,我们可以观察图像中的结果变化。但是,此项目仍有很大的改进空间,并且可以更大程度地扩展参数。例如,我们可以将亮度值调整为 0 到 255 的范围,并将对比度调整为 0 到 127 的范围,以获得更精细和详细的图像。

结论

本教程包含了使用 Open CV 库修改图像的基本理解。我们还实现了一个简单的应用程序,通过滑块可以调整图像的亮度和对比度。