7.2 Python图像处理之图像分割-单阈值分割
7.2 Python图像处理之图像分割-单阈值分割文章目录7.2 Python图像处理之图像分割-单阈值分割1 算法原理2 代码3 效果1 算法原理单阈值分割算法原理:单阈值分割是指将一灰度图,大于阈值的像素白色表示,小于阈值的像素以黑色表示。或者颜色调换过来也可以。该方法找到一个阈值,如果像素低于阈值,就认为是背景,否则认为是目标的一部分。一般流程:通过判断图像中每一个像素点的特征属性是否满足阈
7.2 Python图像处理之图像分割-单阈值分割
1 算法原理
单阈值分割算法原理:
单阈值分割是指将一灰度图,大于阈值的像素白色表示,小于阈值的像素以黑色表示。或者颜色调换过来也可以。该方法找到一个阈值,如果像素低于阈值,就认为是背景,否则认为是目标的一部分。
一般流程:通过判断图像中每一个像素点的特征属性是否满足阈值的要求,来确定图像中的该像素点是属于目标区域还是背景区域,从而将一幅灰度图像转换成二值图像。用数学表达式来表示,则可设原始图像 f(x,y),T 为阈值,分割图像时则满足下式:

0是黑色,255是白色
如果图像中有多个灰度值不同的区域,那么可以选择一系列的阀值以将每个像素分到合适的类别中去。如果只用一个阀值分割称为单阀值方法。
2 代码
运行代码说明
1.要改变代码中的图片地址(地址不能有中文)
最后一行代码:更改
put(path)函数中的路径put(r'../image/image1.jpg')2.注意最后的
plt.savefig('1.new.jpg')是保存plt图像,如果不使用可以注释掉代码依赖包:
matplotlib 3.4.2 numpy 1.20.3 opencv-python 4.1.2.30# pip安装 pip install matplotlib numpy opencv-python
import cv2
import numpy as np
from matplotlib import pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
def put(path):
image = cv2.imread(path)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 转为灰度图
# 方法选择为THRESH_BINARY单阈值,150为阈值,小于阈值使用0表示。0是黑色,255是白色
ret1, th1 = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY)
plt.subplot(131), plt.imshow(image[:,:,::-1]) # img[:,:,::-1]转换是为了转回RGB格式,这样才可以正常显示彩色图像
plt.title("原图"),plt.axis('off')
plt.subplot(132), plt.imshow(gray, "gray")
plt.title("灰度图"),plt.axis('off')
plt.subplot(133), plt.imshow(th1, "gray")
plt.title("单阈值 " + str(ret1)),plt.axis('off')
# plt.savefig('2.new-img.jpg')
plt.show()
# 图像处理函数,要传入路径
put(r'../image/img5.jpg')
不同图片要取合适的阈值才好看
3 效果

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)