OpenCV-07-图像的二值化(阈值分割)

1. 图像的二值化

#返回阈值和二值化后的图片
ret,res = cv.threshold(img,阈值,最大值,类型)
'''
类型主要有:
THRESH_BINARY	    高于阈值改为255,低于阈值改为0
THRESH_BINARY_INV	高于阈值改为0,低于阈值改为255
THRESH_TRUNC	    截断,高于阈值改为阈值,最大值失效
THRESH_TOZERO	    高于阈值不改变,低于阈值改为0
THRESH_TOZERO_INV	高于阈值该为0,低于阈值不改变
'''

2. 自适应阈值,对明暗不均的图像效果较好

# 直接调用api处理 参数1:图像数据 参数2:最大值  参数3:计算阈值的方法, 参数4:阈值类型 参数5:处理块大小  参数6:算法需要的常量C
thresh_img = cv.adaptiveThreshold(img,255,cv.ADAPTIVE_THRESH_GAUSSIAN_C,cv.THRESH_BINARY,11,5)
#阈值类型有
#cv.ADAPTIVE_THRESH_MEAN_C:该阈值是该附近区域减去恒定的平均C
#cv.ADAPTIVE_THRESH_GAUSSIAN_C:阈值是邻域值减去常数C的高斯加权和。

3. 最大类间方差法(大津法)

ret,thresh_img = cv.threshold(gaussian_img, 0, 255, cv.THRESH_BINARY|cv.THRESH_OTSU)

4. 三角阈值,直方图中出现明显的峰谷时(三角形比较明显),可采用此方法将前景和背景分离。

ret,thresh_img = cv.threshold(gaussian_img, 0, 255, cv.THRESH_BINARY|cv.THRESH_TRIANGLE)

你可能感兴趣的:(OpenCV)