利用cv2.threshold函数实现简单二值化,OpenCV 提供了多种不同的阈值方法,是由第四个参数来决定的,请调整第四个参数并比较
时间: 2024-02-25 21:56:13 浏览: 199
`cv2.threshold()` 是 OpenCV 中的函数,用于实现简单二值化。它可以根据设定的阈值将图像像素值分为两类,一类大于阈值,另一类小于等于阈值,从而得到二值化图像。
下面是一个使用 `cv2.threshold()` 函数实现简单二值化的示例代码:
```python
import cv2
# 读取图像
img = cv2.imread('image.jpg', 0)
# 简单二值化
ret, thresh1 = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)
ret, thresh2 = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY_INV)
ret, thresh3 = cv2.threshold(img, 127, 255, cv2.THRESH_TRUNC)
ret, thresh4 = cv2.threshold(img, 127, 255, cv2.THRESH_TOZERO)
ret, thresh5 = cv2.threshold(img, 127, 255, cv2.THRESH_TOZERO_INV)
# 显示图像
cv2.imshow('binary', thresh1)
cv2.imshow('binary_inv', thresh2)
cv2.imshow('trunc', thresh3)
cv2.imshow('tozero', thresh4)
cv2.imshow('tozero_inv', thresh5)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在上面的示例代码中,`cv2.threshold()` 函数的第四个参数决定了二值化的方式。常用的阈值方法及其对应的参数解释如下:
- `cv2.THRESH_BINARY`:大于阈值的像素赋值为最大值,小于等于阈值的像素赋值为 0。
- `cv2.THRESH_BINARY_INV`:大于阈值的像素赋值为 0,小于等于阈值的像素赋值为最大值。
- `cv2.THRESH_TRUNC`:大于阈值的像素赋值为阈值,小于等于阈值的像素保持不变。
- `cv2.THRESH_TOZERO`:大于阈值的像素保持不变,小于等于阈值的像素赋值为 0。
- `cv2.THRESH_TOZERO_INV`:大于阈值的像素赋值为 0,小于等于阈值的像素保持不变。
你可以根据需要选择不同的阈值方法,调整第四个参数的取值,来得到不同的二值化结果。
阅读全文