python将灰度图像二值化,如何对图像进行二值化处理
在用大蟒进行图像处理时,二值化是非常重要的一步,现总结了自己遇到过的6种图像二值化的方法(当然这个绝对不是全部的二值化方法,若发现新的方法会继续新增)。
相关学习推荐:python视频教程
1.中文版简单阈值cv2。阈值
2.中文版自适应阈值cv2.adaptiveThreshold(自适应阈值中计算阈值的方法有两种:平均值c和高斯_c,可以尝试用下哪种效果好)
3.大津的二值化
例子:
导入cv2
将数组作为铭牌导入
从绘制精美的图表导入pyplot作为血小板计数
img=cv2.imread(scratch.png ,0)
#全局阈值
ret1,th1=cv2.threshold(img,127,255,cv2 .THRESH_BINARY)
# Otsu阈值
th2=cv2.adaptiveThreshold(img,255,cv2 .自适应_阈值_均值_C,cv2 .THRESH_BINARY,11,2)
# Otsu阈值
# 阈值一定要设为0 !
ret3,th3=cv2.threshold(img,0,255,cv2 .THRESH_BINARY cv2 .OTSU)
#绘制所有图像及其直方图
images=[img,0,th1,img,0,th2,img,0,th3]
头衔=[
原始噪声图像,直方图,全局阈值(v=127),
原始噪声图像,直方图,自适应阈值,
原始噪声图像,直方图,‘大津阈值化
]
# 这里使用了pyplot中画直方图的方法,plt.hist,要注意的是它的参数是一维数组
# 所以这里使用了(numpy)拉威尔方法,将多维数组转换成一维,也可以使用变平方法
# ndarray.flat数组上的一维迭代器。
# ndarray.flatten按行优先顺序排列数组元素的一维数组副本。
对于范围(3):中的我
plt.subplot(3,3,i * 3 1),plt.imshow(images[i * 3], gray )
plt.title(titles[i * 3]),plt.xticks([]),plt.yticks([])
plt.subplot(3,3,I * 3 ^ 2),plt.hist(images[i * 3]).拉威尔(256)
PLT。title(titles[I * 3 ^ 1]),plt.xticks([]),plt.yticks([])
plt.subplot(3,3,i * 3 3),plt.imshow(images[i * 3 2], gray )
PLT。title(titles[I * 3 ^ 2]),plt.xticks([]),plt.yticks([])
plt.show()结果图:
4.克扣尼布莱克阈值
5.斯金奇索沃拉阈值(主要用于文本检测)
例子:
https://sci工具包-图片。org/docs/dev/auto _ examples/segmentation/plot _ ni black _ sauvola。超文本标记语言
导入绘制精美的图表
将matplotlib.pyplot作为血小板计数导入
从skimage.data导入页面
从撇除.过滤器导入(threshold_otsu,threshold_niblack,
threshold_sauvola)
matplotlib。RC params[ font。尺寸]=9
image=page()
二进制_全局=图像阈值_otsu(图像)
window_size=25
thresh _ ni black=threshold _ ni black(image,window_size=window_size,k=0.8)
thresh _ sauvola=threshold _ sauvola(image,window_size=window_size)
binary _ ni black=图像阈值_ ni黑色
binary _ sauvola=image thresh _ sauvola
plt.figure(figsize=(8,7))
plt.subplot(2,2,1)
plt.imshow(image,cmap=plt.cm.gray)
plt.title("原件")
plt.axis("关")
情节子情节(2,2,2)
plt.title(全局阈值)
plt.imshow(binary_global,cmap=plt.cm.gray)
plt.axis("关")
情节子情节(2,2,3)
plt.imshow(binary_niblack,cmap=plt.cm.gray)
plt.title(Niblack阈值)
plt.axis("关")
情节子情节(2,2,4)
plt.imshow(binary_sauvola,cmap=plt.cm.gray)
plt.title(索沃拉阈值)
plt.axis("关")
plt.show()结果图:
6.积分阈值(主要用于文本检测)
使用方法: 运行下面网址的util.py文件
https://github.com/Liang-yc/IntegralThreshold
结果图:
以上就是计算机编程语言图像处理二值化方法实例云集的详细内容,更多请关注盛行信息技术软件开发工作室其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。