常用的应用如下:
- 物体检测和分割:在许多计算机视觉应用中,我们可能需要检测并分割图像中的物体。二值化可以帮助我们将物体和背景区分开来,从而进行后续的分析和识别。
- 边缘检测:二值化可以用于强调图像中的边缘。这对于检测物体的外形或进行边缘检测算法的应用很有用。
- 图像分析和测量:在进行图像分析时,我们可能需要测量特定区域的大小、形状等特征。二值化可以使这些特征更加突显,便于进行测量和分析。
- 文档辨识:在文档辨识和文字提取中,常常使用二值化图像来清晰地区分文字和背景,使得后续的文字识别更加准确。
cv2.threshold
是OpenCV 中用于图像二值化的函数
retval , threshold_image = cv2.threshold ( src , thresh , maxval , type [ , dst ] )
src
: 输入的灰度图像,即要进行二值化处理的原始图像。thresh
:二值化的阈值,超过这个阈值的像素值将被分为高于阈值或低于阈值的两个类别,具体取值根据不同的应用需求。maxval
: 超过阈值的像素值将被赋予的新值,通常是最大值,例如255(白色)。type
: 二值化操作的类型,有不同的选项,例如:
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,小于阈值的像素保持不变。
dst
(选用): 输出的二值化图像。如果未提供,则函数会修改src
本身。
cv2.threshold
的返回值retval
是实际使用的阈值,根据不同的二值化方法,retval
可能与指定的阈值thresh
有所不同。threshold_image
则是二值化后的图像
例字
在这个例子中,我们使用cv2.THRESH_BINARY
进行二值化,阈值thresh_value
为128,大于128 的像素赋予255(白色),小于等于128 的像素赋予0(黑色)。
import cv2
# 读取灰度图像
image = cv2.imread('path/to/your/image.jpg', cv2.IMREAD_GRAYSCALE)
# 二值化
thresh_value = 128
_, binary_image = cv2.threshold(image, thresh_value, 255, cv2.THRESH_BINARY)
# 显示原始图像和二值化后的图像
cv2.imshow('Original Image', image)
cv2.imshow('Binary Image', binary_image)
cv2.waitKey(0)
cv2.destroyAllWindows()