python-opencv 基础系列——cv2.adaptiveThreshold()函数用于图像自适应阈值二值化

  1、cv2.adaptiveThreshold(),自适应阈值可以看成一种局部性的阈值,通过规定一个区域大小,比较处理像素点与区域大小里面像素点的平均值—阈值(或者其他特征)的大小关系确定这个像素点是属于黑或者白(如果是二值情况)。

dst = cv2.adaptiveThreshold(src, maxval, thresh_type, type, Block Size, C)

返回值:

  • dst: 输出图

输入参数:

1. src: 输入图,只能输入单通道图像,通常来说为灰度图

2. maxval: 当像素值超过了阈值(或者小于阈值,根据type来决定),所赋予的值

3. thresh_type: 阈值的计算方法,包含以下2种类型:

cv2.ADAPTIVE_THRESH_MEAN_C:            区域内均值

cv2.ADAPTIVE_THRESH_GAUSSIAN_C:    区域内像素点加权和,权重为一个高斯窗口

4. type:二值化操作的类型,与固定阈值函数相同,用于控制参数2 maxval,包含以下5种类型:

cv2.THRESH_BINARY: 黑白二值

cv2.THRESH_BINARY_INV:黑白二值反转

cv2.THRESH_TRUNC:

cv2.THRESH_TOZERO:

cv2.THRESH_TOZERO_INV:

5. Block Size: 图片中区域的大小

6. C :阈值计算方法中的常数项

 

import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('0.png', 0)
img = cv2.medianBlur(img, 5)
ret,th1 = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)
#把窗口设置足够大以后但不能超过图像大小,得到的结果就与全局阈值相同
#窗口大小使用的为11,当窗口越小的时候,得到的图像越细。
th2 = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY,11,2)
th3 = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY,11,2)
titles = ['Original Image', 'Global Thresholding v=127','Adaptive Mean Thresholding', 'Adaptive Gaussian Thresholding']
images = [img, th1, th2, th3]
for i in range(4):
    plt.subplot(2, 2, i+1), plt.imshow(images[i], 'gray')
    plt.title(titles[i])
    plt.xticks([]), plt.yticks([])
plt.show()

python-opencv 基础系列——cv2.adaptiveThreshold()函数用于图像自适应阈值二值化_第1张图片

你可能感兴趣的:(python-opencv 基础系列——cv2.adaptiveThreshold()函数用于图像自适应阈值二值化)