没有合适的资源?快使用搜索试试~ 我知道了~
【opencv学习笔记 16图像二值化】代码详细注释
3 下载量 95 浏览量
2020-12-21
12:11:00
上传
评论 1
收藏 289KB PDF 举报
温馨提示
试读
2页
图像二值化 二值图像:只有黑和白 0 代表黑色 1 其实是255 代表白色 图像二值化的方法 全局阈值 局部阈值 OTSU Triangle 手动与自动 自适应阈值 相关代码 import cv2 as cv import numpy as np def threshold_demo(image): """ 全局阈值 :param image: :return: """ # 首先图像灰度化处理 gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) # 函数参数 输入的图像 阈值 最大值
资源推荐
资源详情
资源评论
【【opencv学习笔记学习笔记 16图像二值化】代码详细注释图像二值化】代码详细注释
图像二值化图像二值化
二值图像:只有黑和白
0 代表黑色代表黑色
1 其实是其实是255 代表白色代表白色
图像二值化的方法图像二值化的方法
全局阈值
局部阈值
OTSU
Triangle
手动与自动
自适应阈值
相关代码相关代码
import cv2 as cv
import numpy as np
def threshold_demo(image):
"""
全局阈值
:param image:
:return:
"""
# 首先图像灰度化处理
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
# 函数参数 输入的图像 阈值 最大值 方法
# 当方法使用了cv.THRESH_TRIANGLE 等自己寻找阈值时,函数中的参数2 指定的阈值就不起作用
ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)
print("threshold value %s" % ret)
cv.imshow("binary", binary)
# 如果想要自己设定阈值 将参数2设定为自己设定的阈值 最常用
ret, binary = cv.threshold(gray, 127, 255, cv.THRESH_BINARY)
cv.imshow("127 binary", binary)
# 反向
ret, binary = cv.threshold(gray, 127, 255, cv.THRESH_BINARY_INV)
cv.imshow("THRESH_BINARY_INV", binary)
# cv.THRESH_TRUNC 截断 截断设定最大值为127
ret, binary = cv.threshold(gray, 127, 255, cv.THRESH_TRUNC)
cv.imshow("THRESH_TRUNC", binary)
# 小于127的全部变为0
ret, binary = cv.threshold(gray, 127, 255, cv.THRESH_TOZERO)
cv.imshow("THRESH_TOZERO", binary)
def local_threshold(image):
"""
局部阈值 可针对亮度不均匀情况
:param image:
:return:
"""
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
# 自适应阈值 参数:图像 最大值 方法(有俩个可选) 二值化 奇数 常量(均值)
binary = cv.adaptiveThreshold(gray, 255, cv.ADAPTIVE_THRESH_GAUSSIAN_C, cv.THRESH_BINARY, 25, 10)
cv.imshow("LOCAL binary", binary)
def custom_threshold(image):
"""
自己计算图像的均值 设定为阈值
:param image:
:return:
"""
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
h, w = gray.shape[:2] # 变成一维的数组
m = np.reshape(gray, [1, w * h])
# 求所有的平均值
mean = m.sum() / (w * h)
print("mean : ", mean)
ret, binary = cv.threshold(gray, mean, 255, cv.THRESH_BINARY)
cv.imshow("custom_threshold binary", binary)
src = cv.imread("tree.jpg")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
threshold_demo(src)
local_threshold(src)
custom_threshold(src)
cv.waitKey(0)
cv.destroyAllWindows()
结果展示结果展示
资源评论
weixin_38670065
- 粉丝: 4
- 资源: 924
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功