Opencv:图像二值化 cv2.threshold()
1cv2.threshold()用于获取二元值的灰度图像 。cv2.threshold(src, thresh, maxval, type)参数描述返回src源图片,必须是单通道,即灰度图返回两个值:阈值、二值图thresh用于对像素值进行分类的阈值,取值范围0~255maxval填充色,如果像素值大于(有时小于)阈值则要给出的值,取值范围0~255type阈值类型阈值类型表:阈值用数字表示.
·
1 cv2.threshold()
用于获取二元值的灰度图像 。
cv2.threshold(src, thresh, maxval, type)
| 参数 | 描述 | 返回 |
| src | 源图片,必须是单通道,即灰度图 | 返回两个值:阈值、二值图 |
| thresh | 用于对像素值进行分类的阈值,取值范围0~255 | |
| maxval | 填充色,如果像素值大于(有时小于)阈值则要给出的值,取值范围0~255 | |
| type | 阈值类型 |
阈值类型表:
| 阈值 | 用数字表示 | 小于阈值的像素点 | 大于阈值的像素点 |
| cv2.THRESH_BINARY | 0 | 置0 | 置填充色maxval |
| cv2.THRESH_BINARY_INV | 1 | 置填充色maxval | 置0 |
| cv2.THRESH_TRUNC | 2 | 保持原色 | 置灰色 |
| cv2.THRESH_TOZERO | 3 | 置0 | 保持原色 |
| cv2.THRESH_TOZERO_INV | 4 | 保持原色 | 置0 |
2 栗子
import cv2
# 读入RGB图像图像
img = cv2.imread('../../DAVIS-2016/JPEGImages/1080p/flamingo/00007.jpg')
img = cv2.resize(img, (224, 224))
# 灰度化
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 二值化
ret, binary = cv2.threshold(img_gray, 127, 255, cv2.THRESH_BINARY)
print(ret)
print(binary)
# result
127.0
[[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
...
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]]
原图:

灰度图:

结果:
- cv2.THRESH_BINARY

- cv2.THRESH_BINARY_INV

-
cv2.THRESH_TRUNC

-
cv2.THRESH_TOZERO

- cv2.THRESH_TOZERO_INV

参考:
- https://blog.csdn.net/JNingWei/article/details/77747959
- https://blog.csdn.net/xiaokai1999/article/details/105907198
更多推荐



所有评论(0)