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 值设置为零来获得期望的结果。 ![]() 当我们执行给定的入门代码示例时,alpha 参数代表对比度,gamma 参数充当亮度修改器。虽然调整这些参数可以产生各种效果,但为每个图像变体手动修改它们可能不切实际。因此,更可行的方法是开发图形用户界面 (GUI),并为所需图像滤镜的每个参数确定最佳值。 我们将扩展我们的项目,并创建一个结合了 OpenCV 和 GUI 的应用程序,以优化亮度和对比度参数并调整图像结果。 亮度和对比度控制应用程序我们可以为本节遵循上一节提到的初始步骤。首先,我们需要导入 OpenCV 库,加载相关图像,并将其调整为所需的尺寸。此过程的代码片段如下。请注意,您可以根据您的具体需求调整图像大小。 示例 - 下一步是创建一个函数来调整图像的亮度和对比度。该函数将使用 OpenCV 库的 getTrackbarPos() 函数来检索亮度和对比度元素的当前位置。addWeighted() 函数将用于计算这两个元素的组合输出,以达到期望的效果。下面的代码块演示了此过程。 定义滑块函数后,下一步是创建一个命名窗口和滑块来调整所需的参数。我们将设计两个滑块,一个用于亮度,另一个用于对比度,如下面的代码块所示。waitKey() 函数将在原始图像窗口和滑块窗口都关闭后终止程序。 ![]() 要调整图像的亮度和对比度,我们可以修改亮度滑块和对比度滑块的位置,将值范围分别更改为 0 到 10 和 0 到 20。通过调整滑块的位置,我们可以观察图像中的结果变化。但是,此项目仍有很大的改进空间,并且可以更大程度地扩展参数。例如,我们可以将亮度值调整为 0 到 255 的范围,并将对比度调整为 0 到 127 的范围,以获得更精细和详细的图像。 结论本教程包含了使用 Open CV 库修改图像的基本理解。我们还实现了一个简单的应用程序,通过滑块可以调整图像的亮度和对比度。 下一主题重要的 Python 装饰器 |
我们大多数人都想过,为什么与其他编程语言相比,Python的增长如此迅速?是的,Python确实在很短的时间内声名鹊起,现在我们可以在每个领域看到Python的应用。而且,是的...
阅读9分钟
在本教程中,我们将了解字符串格式化机制。f-string 是格式化字符串的最佳方式。字符串的格式化样式使字符串更具可读性、更简洁且不易出错。它的速度也比其他方法快。在深入研究...
阅读 6 分钟
游戏世界中有许多流行的游戏是使用Python框架及其库开发的,例如《战地2》、《加勒比海盗》等等。大多数开发人员更喜欢Python语言而不是其他编程语言,因为它具有许多功能...
阅读 6 分钟
Python 中的运算符重载意味着提供超出其预定义操作含义的扩展含义。例如,我们使用“+”运算符来添加两个整数以及连接两个字符串或合并两个列表。我们可以通过重载“+”运算符来实现这一点...
5 分钟阅读
简介:本教程讨论 PyBluez - Bluetooth Python 扩展模块。本文旨在向您介绍蓝牙编程,并帮助您开始使用 Python 蓝牙模块 PyBluez。蓝牙套接字编程与网络设计者用于 TCP/IP 连接的套接字编程相同,并且……
阅读 6 分钟
形态学操作可用于提取图像组件,这些组件有助于描述和表示区域的形状。形态学操作是依赖于图像形状的基本任务。它通常在二值图像上进行。它需要两个...
阅读 3 分钟
二进制语言是计算机的语言。计算机的所有内部机制都与位有关。位运算符是允许程序员对整数执行位操作的一组运算符。这些运算符允许程序员操作较低级别的数据,在...
阅读 3 分钟
Python 具有特定的内置函数,因此它支持在多个顺序容器中使用多种循环技术。这些循环函数和方法对于竞争性编程非常有用。它可以在用户必须使用一些特定循环技术的不同项目中使用...
阅读 3 分钟
? 在本文中,您将学习如何在 Python 中打印给定矩阵的螺旋矩阵。以下是打印给定矩阵的螺旋矩阵的 Python 实现:def spiral_matrix(matrix): # 定义变量 top, bottom = 0, len(matrix)-1 ...
阅读 6 分钟
在这个问题中,我们将得到两个链表。这两个链表将在它们各自的一个节点上合并,形成一个 Y 形列表。我们必须找到链表合并的节点。让我们看一些例子来理解...
阅读 16 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India