图像阈值处理
时间: 2023-06-30 11:23:17 浏览: 64
图像阈值处理是一种简单而又常用的图像分割方法,它通过将图像中像素的灰度值与一个预先设定的阈值进行比较,将其分为两类:小于等于阈值的像素被归为一类,大于阈值的像素被归为另一类。这样就可以将图像中的目标与背景分离出来,便于后续的处理。
在 Python 中,使用 OpenCV 库可以很方便地实现图像阈值处理。具体而言,可以使用 `cv2.threshold()` 函数来实现阈值处理,该函数的基本语法如下:
```python
retval, dst = cv2.threshold(src, thresh, maxval, type)
```
其中,`src` 表示输入图像,`thresh` 表示设定的阈值,`maxval` 表示超过阈值的像素要被赋予的值,`type` 表示阈值处理的类型。`retval` 表示实际使用的阈值。
常用的阈值处理类型包括:
- `cv2.THRESH_BINARY`: 二值化阈值处理,小于阈值的像素设为 0,大于等于阈值的像素设为 maxval。
- `cv2.THRESH_BINARY_INV`: 反二值化阈值处理,小于阈值的像素设为 maxval,大于等于阈值的像素设为 0。
- `cv2.THRESH_TRUNC`: 截断阈值处理,小于阈值的像素设为原始值,大于等于阈值的像素设为阈值。
- `cv2.THRESH_TOZERO`: 阈值归零处理,小于阈值的像素设为 0,大于等于阈值的像素保持原始值。
- `cv2.THRESH_TOZERO_INV`: 反阈值归零处理,小于阈值的像素保持原始值,大于等于阈值的像素设为 0。
下面是一个简单的例子,演示如何使用 `cv2.threshold()` 函数进行二值化阈值处理:
```python
import cv2
# 读入一张灰度图像
img = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
# 对图像进行阈值处理
thresh, dst = cv2.threshold(img, 128, 255, cv2.THRESH_BINARY)
# 显示处理后的图像
cv2.imshow('dst', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个例子中,我们首先读入一张灰度图像,并使用 `cv2.threshold()` 函数对其进行二值化阈值处理,将阈值设为 128,超过阈值的像素设为 255。然后,使用 `cv2.imshow()` 函数将处理后的图像显示出来。需要注意的是,由于图像显示速度很快,因此需要使用 `cv2.waitKey()` 函数等待按键,否则图像可能会一闪而过。