opencv图片自动阈值处理和Otsu处理Python实现

不点赞白嫖的都是流氓

自适应阈值处理代码

import cv2

img = cv2.imread("../data/pandas.jpg", 0)
t, dst = cv2.threshold(img, 127, 255, cv2.THRESH_TOZERO)  # t表示返回的阈值
athdMEAN = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 5, 3)
athdGAUS = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 5, 3)
#  自适应的输入图片必须是单通道图片
cv2.imshow('img', img)
cv2.imshow('dst', dst)
cv2.waitKey()
cv2.destroyAllWindows()
cv2.imwrite('../data/threshold.jpg', dst)
cv2.imwrite('../data/threshold_mean.jpg', athdMEAN)
cv2.imwrite('../data/threshold_gaun.jpg', athdGAUS)

三种方式处理的对比
dst
在这里插入图片描述
mean
在这里插入图片描述
gaus
在这里插入图片描述

阈值处理方法的终极boss

Otsu处理
这个阈值处理的方法我最最最最最最(此处省略一万个最)喜欢,它自动帮你检索得到最优阈值,简单好用身心
废话不多说,直接上代码

import cv2

img = cv2.imread("../data/pandas.jpg", 0)
t, dst = cv2.threshold(img, 127, 255, cv2.THRESH_TOZERO)  # t表示返回的阈值

t2, otsu = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY+cv2.THRESH_OTSU)
#  第二个参数必须是0, 第四个参数的第一位可以是之前博客说的那五种阈值处理的方式
#  自适应的输入图片必须是单通道图片
cv2.imshow('img', img)
cv2.imshow('dst', dst)
cv2.waitKey()
cv2.destroyAllWindows()
cv2.imwrite('../data/threshold.jpg', dst)
cv2.imwrite('../data/threshold_otsu.jpg', dst)

效果图
在这里插入图片描述

不点赞白嫖的都是流氓

我们在邂逅相逢时用我们自身的想象做材料塑造的那个恋人,与日后作为我们的终生伴侣的那个真实的人毫无关系,这就是你搭讪别人的理由

发布了45 篇原创文章 · 获赞 24 · 访问量 3430

猜你喜欢

转载自blog.csdn.net/my_name_is_learn/article/details/103976156