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 库实现。
相关文章
Pandas DataFrame DataFrame.shift() 函数
发布时间:2024/04/24 浏览次数:133 分类:Python
-
DataFrame.shift() 函数是将 DataFrame 的索引按指定的周期数进行移位。
Python pandas.pivot_table() 函数
发布时间:2024/04/24 浏览次数:82 分类:Python
-
Python Pandas pivot_table()函数通过对数据进行汇总,避免了数据的重复。
Pandas read_csv()函数
发布时间:2024/04/24 浏览次数:254 分类:Python
-
Pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 DataFrame 中。
Pandas 多列合并
发布时间:2024/04/24 浏览次数:628 分类:Python
-
本教程介绍了如何在 Pandas 中使用 DataFrame.merge()方法合并两个 DataFrames。
Pandas loc vs iloc
发布时间:2024/04/24 浏览次数:837 分类:Python
-
本教程介绍了如何使用 Python 中的 loc 和 iloc 从 Pandas DataFrame 中过滤数据。
在 Python 中将 Pandas 系列的日期时间转换为字符串
发布时间:2024/04/24 浏览次数:894 分类:Python
-
了解如何在 Python 中将 Pandas 系列日期时间转换为字符串