📜  th2=cv2.adaptiveThreshold(img, 255 ,cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11 # no of block size , 2 #c) - Python (1)

📅  最后修改于: 2023-12-03 15:20:37.289000             🧑  作者: Mango

自适应阈值处理

cv2.adaptiveThreshold() 是一种基于局部像素颜色变化自适应调整阈值的处理方式。它主要通过计算像素点周边邻域内的均值或高斯加权和来确定每个像素点的二值化阈值,以此达到更准确的二值化效果。这种处理适用于光照不均匀或者背景噪声比较大的情况下,能够有效提高处理的准确性。

函数签名
th2 = cv2.adaptiveThreshold(
    src, #输入图像
    maxValue, #输出的最大值
    adaptiveMethod, #自适应阈值处理的方法
    thresholdType, #二值化处理的类型
    blockSize, #用于计算阈值的像素邻域大小
    C #从均值或者高斯加权均值中减去的常数,通常为0
)

参数含义:

  • src: 输入图像,必须为单通道灰度图像。
  • maxValue: 输出的最大值,若处理结果超出该范围则会置为该值。
  • adaptiveMethod: 自适应阈值处理的方法,常用 cv2.ADAPTIVE_THRESH_MEAN_Ccv2.ADAPTIVE_THRESH_GAUSSIAN_C 两种。分别表示计算像素邻域内均值或者高斯加权均值。
  • thresholdType: 二值化处理的类型,常用 cv2.THRESH_BINARYcv2.THRESH_BINARY_INV 两种。分别表示二值化或反转二值化。
  • blockSize: 用于计算阈值的像素邻域大小。其值必须为奇数。
  • C: 从均值或者高斯加权均值中减去的常数,通常为0。
示例代码
import cv2

img = cv2.imread("image.jpg", 0) # 读取灰度图像

th2 = cv2.adaptiveThreshold(
    img, 
    255, 
    cv2.ADAPTIVE_THRESH_MEAN_C, 
    cv2.THRESH_BINARY, 
    11, 
    2
)

cv2.imshow("adaptive threshold", th2)

cv2.waitKey(0)
cv2.destroyAllWindows()

上述代码演示了如何利用 cv2.adaptiveThreshold() 方法对一张灰度图像进行自适应阈值处理,并展示了处理结果。

其中,通过调整 blockSizeC 两个参数可以改变处理效果的准确性和鲁棒性。另外,如果选择的像素邻域大小过大,可能会导致处理速度变慢,因此应该根据实际需求进行调整。