Python 中 OpenCV 阈值
本篇文章将解决在 Python 中使用 cv2.threshold()
函数的问题。
阈值技术
阈值处理是一种对黑白图像进行的图像处理技术,可用于去除噪声和过滤具有极值的像素。 在这里,我们使用现有图像通过根据某个阈值调整像素值来创建二值图像。
每个像素值都与给定的阈值进行比较。 如果该值小于阈值,则设置为 0; 否则,它被设置为最大值 (255)。
我们可以使用 Python 中的 OpenCV 库来读取和处理用于计算机视觉技术的图像。 我们可以使用 cv2.threshold()
函数对该库执行阈值处理。
在 OpenCV 中使用 cv.threshold() 函数进行阈值处理
cv2.threshold()
函数在 Python 中实现了图像的基本二进制阈值技术。 它根据与给定阈值的比较将像素值替换为 0 或最大值,并将处理后的图像作为元组返回阈值。
我们使用 src 参数提供要处理的图像。 使用 thresh 参数提供用于比较的阈值。
可以使用 maxval 参数提供最大值。 这取决于下面讨论的阈值技术的类型。
与此函数关联的主要参数是类型参数。 这决定了要使用的二进制阈值类型。
类型参数可以接受五个值。 第一种类型是 cv2.THRESH_BINARY,它遵循二进制阈值的基础知识,当像素值小于阈值时分配像素值 0,当像素值大于阈值时分配 255。
例子:
import cv2
i = cv2.imread('jiyik.png')
img = cv2.cvtColor(i, cv2.COLOR_BGR2GRAY)
r, t = cv2.threshold(img, 60, 255, cv2.THRESH_BINARY)
cv2.imshow('THRESH_BINARY',t)
cv2.waitKey(0)
cv2.destroyAllWindows()
我们使用 cv2.imread()
函数来读取上面示例中的图像。 然后,使用 cv2.cvtColor()
函数将其转换为灰度图像,此过程对于其他类型也将保持相同。
然后,我们应用 cv2.threshold()
函数并提供所需的参数。 阈值为 60,我们应用 cv2.THRESH_BINARY 技术。 使用 cv2.imshow()
函数将最终结果显示在窗口中。
cv2.waitKey()
和 cv2.destroyAllWindows()
函数防止窗口立即关闭,并在用户按下任意键时关闭它们。 让我们讨论其他类型。
我们有 cv2.THRESH_BINARY_INV 类型,与之前的类型相反。 当像素小于阈值时,它将最大值分配给像素并分配 0。
例子:
import cv2
i = cv2.imread('jiyik.png')
img = cv2.cvtColor(i, cv2.COLOR_BGR2GRAY)
r, t = cv2.threshold(img, 60, 255, cv2.THRESH_BINARY_INV)
cv2.imshow('THRESH_BINARY_INV',t)
cv2.waitKey(0)
cv2.destroyAllWindows()
我们通过在 cv2.threshold()
函数中使用 cv2.THRESH_BINARY_INV 类型来处理阈值技术。 该过程与上一个类似。
第三种是cv2.THRESH_TRUNC,如果像素值超过阈值就赋值给阈值。
小于阈值的所有像素保持不变。
例子:
import cv2
i = cv2.imread('jiyik.png')
img = cv2.cvtColor(i, cv2.COLOR_BGR2GRAY)
r, t = cv2.threshold(img, 60, 255, cv2.THRESH_TRUNC)
cv2.imshow('THRESH_TRUNC',t)
cv2.waitKey(0)
cv2.destroyAllWindows()
我们使用 Python 中的 cv2.threshold()
函数实现 cv2.THRESH_TRUNC 阈值技术。
还有 cv2.THRESH_TOZERO 类型。 所有小于阈值的像素值都变为零,而其余的不变。
例子:
import cv2
i = cv2.imread('jiyik.png')
img = cv2.cvtColor(i, cv2.COLOR_BGR2GRAY)
r, t = cv2.threshold(img, 60, 255, cv2.THRESH_TOZERO)
cv2.imshow('THRESH_TOZERO',t)
cv2.waitKey(0)
cv2.destroyAllWindows()
与前一种类型相反的是 cv2.THRESH_TOZERO_INV 类型,其中大于阈值的像素值变为零。 我们可以类似地使用它。
例子:
import cv2
i = cv2.imread('jiyik.png')
img = cv2.cvtColor(i, cv2.COLOR_BGR2GRAY)
r, t = cv2.threshold(img, 120, 255, cv2.THRESH_TOZERO_INV)
cv2.imshow('THRESH_TOZERO_INV',t)
cv2.waitKey(0)
cv2.destroyAllWindows()
总结
我们在本文中讨论了使用 cv2.threshold()
函数实现简单的阈值。 阈值处理是与某个阈值相比改变像素值的技术。
我们讨论了如何使用 cv2.threshold()
函数及其参数。 使用类型参数的不同值,有五种可能的阈值类型。
还有自适应阈值化,可以使用 OpenCV 库实现。
相关文章
Python 中的 OpenCV Canny
发布时间:2023/06/01 浏览次数:184 分类:Python
-
本篇文章将介绍 Python 中的 cv2.canny() 函数。在 Python 中使用 cv2.canny() 函数 cv2.canny() 函数实现了由 John F. Canny 开发的 Canny 边缘检测算法。
在 Python 中使用 OpenCV 筛选
发布时间:2023/06/01 浏览次数:54 分类:Python
-
本教程将演示如何使用 OpenCV 实现 SIFT 算法并将其用于 Python 中的特征匹配。 我们还将学习在 Python 中使用 OpenCV 使用 SIFT 算法来匹配两个图像。
OpenCV ArUco 标记
发布时间:2023/06/01 浏览次数:110 分类:Python
-
本篇文章将介绍使用 OpenCV 的 cv2.aruco.detectMarkers() 函数检测 ArUco 标记。使用 OpenCV 检测 ArUco 标记
OpenCV 包配置
发布时间:2023/06/01 浏览次数:159 分类:Python
-
OpenCV 是一个机器学习库,提供与计算机视觉应用程序相关的各种功能。 OpenCV 可以与 C++、Python、Java 和 MATLAB 一起使用。下面我们将列出安装和运行 OpenCV 时的一些常见问题以及如何解决这些问
使用 OpenCV 在图像上使用 Bitwise_AND
发布时间:2023/06/01 浏览次数:199 分类:Python
-
按位运算符通常用于对使用单个位操作的位或二进制数的模式执行按位运算。 OpenCV 使用相同的概念来处理和提取图像中的信息。在本文中,我们将具体了解如何使用 Python OpenCV 库来使用 Bitwi
OpenCV 中的图像遮罩
发布时间:2023/06/01 浏览次数:55 分类:Python
-
如果我们想过滤掉图像的某些部分,然后将这个过滤掉的部分与另一幅图像结合起来,那么这可以使用遮罩来完成。 在 OpenCV 中,按位与运算符用于将两个不同的图像合并为一个,或者它可以将
Mac 中 Python 没有名为 CV2 的模块
发布时间:2023/06/01 浏览次数:83 分类:Python
-
我们将通过示例介绍如何在Python中正确安装和导入OpenCV模块。在 Python 的 Mac 中没有名为 CV2 的模块 首先,我们必须了解什么是 OpenCV 以及为什么在 Python 中使用它。
用 Python 发送带附件的电子邮件
发布时间:2023/06/01 浏览次数:84 分类:Python
-
本篇文章将介绍如何使用Python发送带附件的邮件。 为此,我们不需要外部库来发送邮件。 相反,我们导入一个名为 smtplib 的模块并使用它,因为邮件是通过 SMTP 协议发送的。 让我们看看我们该
在 Python 中验证电子邮件地址
发布时间:2023/06/01 浏览次数:76 分类:Python
-
有一些内置功能(例如正则表达式)和库(例如 dnspython)可以帮助完成这些过程。 本文将解释如何使用这些功能和库在 Python 中验证电子邮件。在 Python 中使用正则表达式验证电子邮件