图像阈值

  • retval: 实际使用的阈值(在某些情况下可能与设定的阈值不同)
ret, dst = cv2.threshold(src, thresh, maxval, type)

阈值常用 127

  • cv2.THRESH_BINARY: 如果像素值大于阈值,则赋予 maxval,否则赋予 0
  • cv2.THRESH_BINARY_INV: 与 cv2.THRESH_BINARY 相反,如果像素值大于阈值,则赋予 0,否则赋予 maxval
  • cv2.THRESH_TRUNC: 如果像素值大于阈值,则赋予阈值,否则保持不变。
  • cv2.THRESH_TOZERO: 如果像素值大于阈值,则保持不变,否则赋予 0
  • cv2.THRESH_TOZERO_INV: 与 cv2.THRESH_TOZERO 相反,如果像素值大于阈值,则赋予 0,否则保持不变。

图像平滑与滤波

均值滤波:

blur = cv2.blur(img, (3, 3))

简单的平均卷积操作,卷积核为全 1 矩阵(参数二为卷积核大小)

方框滤波

box = cv2.boxFilter(img, -1, (3, 3), normalize=True)

基本和均值滤波一样,但可以自由选择是否归一化(取平均)(若不归一化,若越界取 255)
第二个参数为输出深度,-1 代表与原图一致

高斯滤波

gaussian = cv2.GaussianBlur(img, (5, 5), 1)

卷积核有权重,根据距离锚点远近,越近越大。

中值滤波

median = cv2.medianBlur(img, 5)

第二个参数为核大小,必须为奇数。
会把锚点处的值替换为卷积核覆盖下的元素的中位数。
适合处理椒盐噪音