一:图像二值化
(1)固定阈值二值化
ret, dst = cv2.threshold(src, thresh, maxval, type)
src: 输入图,只能输入单通道图像,通常来说为灰度图
dst: 输出图
thresh: 阈值
maxval: 当像素值超过了阈值(或者小于阈值,根据type来决定),所赋予的值
type:二值化操作的类型,包含以下5种类型: cv2.THRESH_BINARY; cv2.THRESH_BINARY_INV; cv2.THRESH_TRUNC; cv2.THRESH_TOZERO;cv2.THRESH_TOZERO_INV
(2)自适应阈值
dst = cv2.adaptiveThreshold(src, maxval, thresh_type, type, Block Size, C)
src: 输入图,只能输入单通道图像,通常来说为灰度图
dst: 输出图
maxval: 当像素值超过了阈值(或者小于阈值,根据type来决定),所赋予的值
thresh_type: 阈值的计算方法,包含以下2种类型:cv2.ADAPTIVE_THRESH_MEAN_C; cv2.ADAPTIVE_THRESH_GAUSSIAN_C.
type:二值化操作的类型,与固定阈值函数相同,包含以下5种类型: cv2.THRESH_BINARY; cv2.THRESH_BINARY_INV; cv2.THRESH_TRUNC; cv2.THRESH_TOZERO;cv2.THRESH_TOZERO_INV.
Block Size: 图片中分块的大小
C :阈值计算方法中的常数项
二、形态学操作
#构造核
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(3,3))
#腐蚀
dst1 = cv2.erode(dst,kernel)
#膨胀
dst2 = cv2.dilate(dst, kernel)
#两者相减
dst = cv2.absdiff(dst2,dst1)
#按位取反
#dst = cv2.bitwise_not(dst)
#定义结构元素
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
#闭运算
closed = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)
#开运算
opened = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)