OpenCV 3.0 使用 cv2.threshold()函数进行阈值化处理,该函数的语法格式为:
retval, dst = cv2.threshold( src, thresh, maxval, type )
式中:
- retval 代表返回的阈值。
- dst 代表阈值分割结果图像,与原始图像具有相同的大小和类型。
- src 代表要进行阈值分割的图像,可以是多通道的,8 位或 32 位浮点型数值。
- thresh 代表要设定的阈值。
- maxval 代表当 type 参数为 THRESH_BINARY 或者 THRESH_BINARY_INV 类型时,需要设定的最大值。
- type 代表阈值分割的类型
1. 二值化阈值处理(cv2.THRESH_BINARY)
二值化阈值处理会将原始图像处理为仅有两个值的二值图像,其示意图如图 6-3 所示。其 针对像素点的处理方式为:
- 对于灰度值大于阈值thresh的像素点,将其灰度值设定为最大值
- 对于灰度值小于or等于阈值thresh的像素点,将其灰度值设定为0
因此,在对 8 位灰度图像进行二值化时,如果将阈值设定为 127,那么:
- 所有大于 127 的像素点会被处理为 255。
- 其余值会被处理为 0。
【例 6.1】使用函数 cv2.threshold()对数组进行二值化阈值处理,观察处理结果。
import cv2
import numpy as np
img = np.rando