如何使用 Python OpenCV 对图像进行自适应均值和高斯阈值处理?
自适应阈值是一种阈值处理技术。还有其他类型的阈值处理技术,例如使用全局阈值值的简单阈值处理。但是,对于在不同区域具有不同光照条件的图像,使用全局阈值值并不是一个好主意。
自适应阈值计算图像中一小区域的阈值。因此,图像中不同区域具有不同的阈值,与简单的阈值处理技术相比,这可以提供更好的结果。
有三个特殊的参数:adaptive_method、block_size 和 const。请参阅下面给出的语法。
语法
cv2.adaptiveThreshold(img, max_val, adaptive_method, thresh_type, block_size, const)
参数
img − 输入灰度图像。它是一个 numpy.ndarray。
max_valu − 要分配给像素的最大值。
adaptive_method − 它决定如何计算阈值。有两种不同的自适应阈值方法 -
cv2.ADAPTIVE_THRESH_MEAN_C − 在此方法中,阈值是邻域区域的平均值。
cv2.ADAPTIVE_THRESH_GAUSSIAN_C − 在此方法中,阈值是邻域值的加权和,其中权重是高斯窗口。
thresh_type − 要应用的阈值类型。
block_size − 决定邻域区域的大小。
const − 从计算出的平均值或加权平均值中减去的常数。
输出 - 它返回阈值
让我们借助几个 Python 示例来了解自适应均值阈值和自适应高斯阈值。
输入图像
我们将在以下示例中使用此图像作为输入文件。

示例 1:自适应均值阈值
在此程序中,我们使用cv2.ADAPTIVE_THRESH_MEAN_C 作为自适应方法对输入图像应用自适应阈值。我们使用block_size=11 和 const=2。我们使用二进制阈值作为thresh_type。
import cv2 # Read the input RGB image as a Gray Scale image img = cv2.imread('floor.jpg',0) # apply median blur img = cv2.medianBlur(img,5) # apply adaptive mean thresholding th = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY,11,2) # display the output image cv2.imshow("Adaptive Mean Thresholding", th) cv2.waitKey(0) cv2.destroyAllWindows()
输出
运行以上程序后,将生成以下输出窗口 -

以上输出显示了应用自适应均值阈值后的图像。
示例 2:自适应高斯阈值
在此程序中,我们使用cv2.ADAPTIVE_THRESH_GAUSSIAN_C 作为自适应方法对输入图像应用自适应阈值。
我们使用block_size=11 和 const=2。我们使用二进制阈值作为thresh_type。
import cv2 # Read the input RGB image as a Gray Scale image img = cv2.imread('floor.jpg',0) # apply median blur img = cv2.medianBlur(img,5) # apply adaptive mean thresholding th = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY,11,2) # display the output image cv2.imshow("Adaptive Gaussian Thresholding", th) cv2.waitKey(0) cv2.destroyAllWindows()
输出
运行以上程序后,将生成以下输出。

以上输出显示了应用自适应高斯阈值后的图像。
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP