介绍cv2.threshold
时间: 2023-10-14 11:19:08 浏览: 100
cv2.threshold是OpenCV中的一个函数,用于图像二值化。在图像处理中,二值化是将图像转换为只有两个颜色(黑色和白色,或者是0和1)的图像。二值化可以使图像更容易分析和处理。
函数的语法如下:
```
retval, dst = cv2.threshold(src, thresh, maxval, type)
```
其中:
- src: 要进行二值化的原始图像,必须为灰度图像。
- thresh: 阈值,用于将像素值分为两类。
- maxval: 当像素值高于(或低于,具体看type参数)阈值时,要赋予的像素值。
- type: 二值化的类型,有以下几种:
- cv2.THRESH_BINARY: 如果像素值高于阈值,则像素值赋为maxval,否则赋为0。
- cv2.THRESH_BINARY_INV: 如果像素值高于阈值,则像素值赋为0,否则赋为maxval。
- cv2.THRESH_TRUNC: 如果像素值高于阈值,则像素值赋为阈值,否则不变。
- cv2.THRESH_TOZERO: 如果像素值低于阈值,则像素值赋为0,否则不变。
- cv2.THRESH_TOZERO_INV: 如果像素值低于阈值,则像素值赋为maxval,否则不变。
函数返回值retval是实际使用的阈值,dst是输出的二值化图像。
相关问题
127, 255, cv2.THRESH_BINARY_INV)ret, thresh3 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_TRUNC)ret, thresh4 = cv2.threshold(img_gray,
### 使用 `cv2.threshold` 函数的不同标志进行图像阈值处理
#### THRESH_BINARY_INV 阈值处理
当应用 `THRESH_BINARY_INV` 标志时,像素值会根据设定的阈值被反转。如果源图像中的像素值大于指定的阈值,则该像素会被设为0;反之则设为最大值。这可以用于创建黑白对比强烈的图像效果。
```python
import cv2
img = cv2.imread('E:\\python_opencv\\tupian.jpg')
threshold_value = 127
max_value = 255
_, rst = cv2.threshold(img, threshold_value, max_value, cv2.THRESH_BINARY_INV)
cv2.imshow('Original Image', img)
cv2.imshow('Inverted Binary Thresholded Image', rst)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
此代码片段展示了如何读取一张图片并对其执行反向二值化操作[^1]。
#### THRESH_TRUNC 阈值处理
对于 `THRESH_TRUNC` 类型而言,在达到给定的阈值之后,所有的像素都将保持不变而不是变成白色或者黑色。具体来说就是说一旦超过了这个界限就不再增长而是维持在这个水平上。
```python
import cv2
image_path = 'path_to_image'
img_gray = cv2.imread(image_path, 0) # 加载灰度图
trunc_threshold = 200
ret_trunc, thresh_trunc = cv2.threshold(img_gray, trunc_threshold, 255, cv2.THRESH_TRUNC)
cv2.imshow('Truncated Thresholding Result', thresh_trunc)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
上述脚本说明了怎样加载一幅灰度图像并通过截断方式来调整其亮度分布[^2].
另外值得注意的是还有其他类型的阈值方法比如 Otsu's Binarization (`cv2.THRESH_OTSU`) 可以自动计算最佳全局阈值从而实现更好的分割效果[^3].
ret, mask = cv2.threshold(mask, 255 * self.threshold, 0, cv2.THRESH_BINARY)
这是OpenCV库(cv2)中的一个函数调用,用于图像处理中的阈值操作。`ret, mask` 是函数返回的结果,其中:
- `ret` (return value) 表示操作是否成功,通常是一个布尔值(True 或 False)。如果返回值为 True,说明阈值操作按预期完成;如果为 False,则可能出现了错误。
- `mask` 是处理后的图像掩码。`self.threshold` 是应用的阈值,即当像素值大于这个阈值时,对应的像素会被赋予预设的新值(这里是 0),小于等于则保留原值(这里设置为 0 后会变成黑色表示)。`cv2.THRESH_BINARY` 指的是二进制阈值化,意味着只有达到阈值的像素才会被设置为非零(通常是白色,对于 OpenCV,0 和 255 对应黑白)。
总的来说,这行代码的作用是将名为 `mask` 的图像转换为二进制,将低于自定义阈值的像素置为 0,高于阈值的像素(这里设为 255 * self.threshold)保持不变或置为白色。
阅读全文
相关推荐













