📜  OpenCV图像阈值(1)

📅  最后修改于: 2023-12-03 15:18:07.537000             🧑  作者: Mango

OpenCV图像阈值

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,提供了各种图像处理和计算机视觉算法。其中之一的功能是进行图像阈值化。

图像阈值化的概念

图像阈值化是一种图像处理技术,用于将图像转换为二值图像。阈值化的基本思想是选取一个阈值,并将图像中的像素值与该阈值进行比较,根据比较结果将像素设置为两个可能的值之一。一般情况下,像素值高于阈值的部分被设置为一种值(如白色),低于阈值的部分被设置为另一种值(如黑色)。

OpenCV中的图像阈值化函数

OpenCV提供了多个函数用于进行图像阈值化。下面是其中几个常用的函数:

1. cv2.threshold()
retval, threshold = cv2.threshold(src, thresh, maxval, type[, dst])

该函数将输入图像进行阈值化处理,并返回阈值化结果。具体参数如下:

  • src:输入图像,必须为灰度图像(单通道)。
  • thresh:设定的阈值。
  • maxval:像素值高于阈值时设置的像素值。
  • type:阈值化的类型,如THRESH_BINARY(二值化)、THRESH_BINARY_INV(反二值化)等。
  • dst:输出的阈值化结果图像,可选。

示例代码:

import cv2

img = cv2.imread('image.png', cv2.IMREAD_GRAYSCALE)
retval, threshold = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)
cv2.imshow('Thresholded Image', threshold)
cv2.waitKey(0)
cv2.destroyAllWindows()
2. cv2.adaptiveThreshold()
threshold = cv2.adaptiveThreshold(src, maxval, adaptiveMethod, thresholdType, blockSize, C[, dst])

该函数对图像进行自适应阈值化处理,并返回阈值化结果。具体参数如下:

  • src:输入图像,必须为灰度图像(单通道)。
  • maxval:像素值高于阈值时设置的像素值。
  • adaptiveMethod:自适应阈值化的方法,如ADAPTIVE_THRESH_MEAN_C(基于均值的自适应阈值化)等。
  • thresholdType:阈值类型,如THRESH_BINARY(二值化)、THRESH_BINARY_INV(反二值化)等。
  • blockSize:用于计算阈值的像素领域大小,必须为奇数。
  • C:常数,从计算的均值或加权均值中减去的值。
  • dst:输出的阈值化结果图像,可选。

示例代码:

import cv2

img = cv2.imread('image.png', cv2.IMREAD_GRAYSCALE)
threshold = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11, 2)
cv2.imshow('Adaptive Thresholded Image', threshold)
cv2.waitKey(0)
cv2.destroyAllWindows()
结语

图像阈值化是OpenCV中常用的图像处理操作之一,可以有效地将图像转化为二值图像。OpenCV提供了丰富的函数用于进行图像阈值化,开发者可以根据实际需求选择适合的函数进行使用。以上介绍了两个常用的图像阈值化函数和示例代码,希望对程序员有所帮助。