自适应阈值处理
案例© Fu Xianjun. All Rights Reserved.
对于色彩均衡的图像,直接使用一个阈值就能完成对图像的阈值化处理。但是,有时图像的色彩是不均衡的,此时如果只是使用一个阈值,就无法得到清晰有效的阈值分割结果图像。
OpenCV提供了函数cv2.adaptiveThreshold()来实现自适应阈值处理。
素材:
adaptiveThreshold函数:
dst = cv2.adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C)
src: 输入图,必须是单通道的图像
dst: 输出图
maxValue:最大值
adaptiveMethod:自适应方法
thresholdType:阈值处理方法,必须是cv2.THRESH_BINARY或者cv2.THRESH_BINARY_INV
blockSize:块大小,一个像素在计算其阈值时所使用的领域尺寸。
C:常量
把原图从BGR模式转换成GRAY模式:
import cv2
peppa = cv2.imread('peppa.jpg')
img=cv2.cvtColor(peppa,cv2.COLOR_BGR2GRAY)
cv2.imshow('Peppa',img)
cv2.waitKey()
cv2.destroyAllWindows()
效果图:
方法cv2.ADAPTIVE_THRESH_MEAN_C
athdMEAN=cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,7,5)
效果图:
方法cv2.ADAPTIVE_THRESH_GAUSSIAN_C
athdGAUS=cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,5,3)
效果图:
能看出两种函数处理方法的差距在哪吗?