OpenCV学习: 阈值分割
-
使用固定阈值、自适应阈值和Otsu阈值法”二值化”图像
-
OpenCV函数:
cv2.threshold()
,cv2.adaptiveThreshold()
教程
固定阈值分割
固定阈值分割很直接,一句话说就是像素点值大于阈值变成一类值,小于阈值变成另一类值。
import cv2
#读入灰度图
img = cv2.imread('xxa.Jpeg')
#阈值分割
#cv2.threshold()用来实现阈值分割 ,四个参数:原图 , 设定阈值, 最大阈值, 阈值方式
ret,th = cv2.threshold(img,127,255,cv2.THRESH_BINARY)
cv2.imshow('th',th)
cv2.waitKey(0)
自适应阈值
看得出来固定阈值是在整幅图片上应用一个阈值进行分割,它并不适用于明暗分布不均的图片。 cv2.adaptiveThreshold()
自适应阈值会每次取图片的一小部分计算阈值,这样图片不同区域的阈值就不尽相同。它有5个参数,其实很好理解,先看下效果:
cv2.THRESH_BINARY
大于阈值转为最大值,小于转为0
cv2.THRESH_BINARY_INV
inv---反转
cv2.THRESH_TRUNC
大于阈值部分为阈值,小于不变
cv2.THRESH_TOZERO
大于阈值保持不变,小于设为0
cv2.THRESH_TOZERO_INV
inv---反转