python cv2.threshold函数
时间: 2023-06-10 21:08:20 浏览: 192
`cv2.threshold()` 函数是 OpenCV 库中的一个函数,用于将灰度图像进行二值化处理。它的语法如下:
```
retval, dst = cv2.threshold(src, thresh, maxval, type)
```
- `src`:输入的灰度图像,必须是单通道的图像。
- `thresh`:阈值,用于将像素值分成两类,小于阈值的像素值设为 0,大于等于阈值的像素值设为 `maxval`。
- `maxval`:二值化后的最大值,通常为 255。
- `type`:二值化类型,有以下几种:
- `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()` 函数返回一个元组 `(retval, dst)`,其中 `retval` 表示阈值,`dst` 表示处理后的二值化图像。
相关问题
详细说明cv2.threshold函数
cv2.threshold函数是OpenCV中常用的图像处理函数之一,用于将灰度图像二值化。它的具体参数如下:
cv2.threshold(src, thresh, maxval, type[, dst])
参数含义:
- src:输入图像,必须是灰度图像。
- thresh:阈值,可以是一个固定的数值,也可以是一个自适应阈值算法。
- maxval:当像素值大于阈值时,赋予的新像素值。
- type:阈值类型,包括cv2.THRESH_BINARY、cv2.THRESH_BINARY_INV、cv2.THRESH_TRUNC、cv2.THRESH_TOZERO、cv2.THRESH_TOZERO_INV等。
- dst:输出图像,可选参数。
cv2.threshold函数的作用是将灰度图像二值化,即将像素值大于阈值的像素赋予一个新的像素值,使得图像只有黑白两种颜色。其中,阈值可以是一个固定的数值,也可以是一个自适应阈值算法,阈值类型包括二值化、反二值化、截断、取零和取反等。
示例代码:
```python
import cv2
import numpy as np
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('Original Image',img)
cv2.imshow('Binary Threshold',thresh1)
cv2.imshow('Binary Threshold Inverted',thresh2)
cv2.imshow('Truncated Threshold',thresh3)
cv2.imshow('Set to 0',thresh4)
cv2.imshow('Set to 0 Inverted',thresh5)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这段代码读取一张图片,将其用cv2.threshold函数分别进行二值化、反二值化、截断、取零和取反操作,并将结果显示出来。可以通过调整阈值和阈值类型来进行不同的二值化操作。
cv2.threshold函数的用法
`cv2.threshold()` 是一个用于图像阈值化的函数,它可以将图像中的像素值进行二值化或多值化处理,使像素值只保留在特定的范围内。`cv2.threshold()` 函数的用法如下:
```python
retval, dst = cv2.threshold(src, thresh, maxval, type)
```
其中:
- `src`:表示输入图像,必须为灰度图像。
- `thresh`:表示设定的阈值。
- `maxval`:表示当像素值超过阈值时,所赋予的新值,一般为一个白色像素值(255)。
- `type`:表示阈值类型,包含以下几种类型:
- `cv2.THRESH_BINARY`:二值化阈值,超过阈值的像素值设为 `maxval`,否则设为 0。
- `cv2.THRESH_BINARY_INV`:反二值化阈值,超过阈值的像素值设为 0,否则设为 `maxval`。
- `cv2.THRESH_TRUNC`:截断阈值,超过阈值的像素值设为阈值,否则不变。
- `cv2.THRESH_TOZERO`:超过阈值的像素值不变,否则设为 0。
- `cv2.THRESH_TOZERO_INV`:超过阈值的像素值设为 0,否则不变。
`cv2.threshold()` 函数返回两个值:
- `retval`:表示在二值化和反二值化时使用的阈值。
- `dst`:表示输出图像,与 `src` 大小相同,像素值为二值化后的值。
下面是一个简单的例子,演示如何使用 `cv2.threshold()` 函数对一张灰度图像进行二值化处理:
```python
import cv2
# 读取灰度图像
img = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
# 二值化处理
retval, dst = cv2.threshold(img, 128, 255, cv2.THRESH_BINARY)
# 显示原图和处理后的图像
cv2.imshow('src', img)
cv2.imshow('dst', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
阅读全文