OpenCV中,进行图像阈值化?

10 min read

在OpenCV中,进行图像阈值化的函数是cv2.threshold()。该函数接受以下参数:

  • src: 需要处理的原图像
  • thresh: 阈值
  • maxval: 如果像素值大于阈值,像素值变为这个值
  • type: 阈值化类型

常用阈值化类型包括:

  • cv2.THRESH_BINARY: 当像素值大于阈值时,设置为maxval,否则为0
  • cv2.THRESH_BINARY_INV: 当像素值大于阈值时,设置为0,否则为maxval
  • cv2.THRESH_TRUNC: 当像素值大于阈值时,设置为阈值,否则为原像素值
  • cv2.THRESH_TOZERO: 当像素值大于阈值时,原样保留,否则为0
  • cv2.THRESH_TOZERO_INV: 当像素值大于阈值时,为0,否则原样保留

例如,将图片进行二值化:

import cv2

img = cv2.imread('image.jpg', 0)
ret, img_threshold = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)
cv2.imshow('Original Image', img)
cv2.imshow('Thresholded Image', img_threshold)

cv2.waitKey(0)
cv2.destroyAllWindows()