cv2.threshold cv2.morphologyEx
在 cv2.threshold(gray, threshold, 255, cv2.THRESH_BINARY)
函数中,各个参数的含义如下:
-
gray
:- 输入的灰度图像(单通道图像),这是进行阈值处理的对象。
- 注意:阈值函数只能处理单通道灰度图,不能直接用于彩色图像。
-
threshold
:- 设定的阈值(一个具体的数值,例如127)。
- 函数会将图像中每个像素的灰度值与该阈值进行比较,再根据阈值类型决定像素的输出值。
-
255
:- 当像素值满足阈值条件时,赋予该像素的最大值(通常为255,代表白色)。
- 这个值的范围与图像的位深有关,对于8位图像(最常见),最大值就是255。
-
cv2.THRESH_BINARY
:- 阈值处理的类型,这里表示"二值化阈值"。
- 工作逻辑:
- 若像素灰度值 > 设定的阈值,则像素值设为第三个参数(255)。
- 若像素灰度值 ≤ 设定的阈值,则像素值设为0(黑色)。
其他常见的阈值类型还包括:
cv2.THRESH_BINARY_INV
:反转二值化(满足条件设为0,不满足设为255)cv2.THRESH_TRUNC
:截断(超过阈值的像素设为阈值,其余不变)cv2.THRESH_TOZERO
:低于阈值的像素设为0,其余不变
函数的返回值:
ret
:实际使用的阈值(与输入的threshold
一致,某些自适应阈值方法中可能不同)binary
:处理后的二值化图像
在 cv2.morphologyEx(binary, cv2.MORPH_OPEN, kernel, iterations=1)
函数中,各个参数的含义如下:
-
binary
:- 输入图像,通常是二值化图像(只有0和255两个值的图像)。
- 形态学操作主要用于二值图像,也可用于灰度图像,但二值图像是最常见的应用场景。
-
cv2.MORPH_OPEN
:- 形态学操作的类型,这里表示"开运算"。
- 开运算的本质是先腐蚀(Erosion)后膨胀(Dilation),主要作用是:
- 去除图像中的小噪声点
- 分离相邻的物体(如果距离较近)
- 保留较大物体的形状和大小基本不变
-
kernel
:- 形态学操作的结构元素(也称为核),是一个由0和1组成的矩阵。
- 核的形状和大小会影响操作效果,常见的有矩形(
cv2.getStructuringElement(cv2.MORPH_RECT, (k, k))
)、十字形(cv2.MORPH_CROSS
)、椭圆形(cv2.MORPH_ELLIPSE
)。 - 例如:
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))
表示创建一个3×3的矩形核。
-
iterations=1
(可选参数):- 操作的迭代次数,默认值为1。
- 迭代次数越多,形态学操作的效果越明显(例如,多次腐蚀+膨胀可以去除更大的噪声)。
函数的返回值 opening
是经过开运算处理后的图像。
其他常见的形态学操作类型:
cv2.MORPH_CLOSE
:闭运算(先膨胀后腐蚀),用于填充物体内部的小空洞cv2.MORPH_ERODE
:单独的腐蚀操作cv2.MORPH_DILATE
:单独的膨胀操作cv2.MORPH_GRADIENT
:形态学梯度(膨胀-腐蚀),用于提取物体边缘