import cv2
import matplotlib.pyplot as plt
import matplotlib
# 设置画图支持中文
font = {'family': 'SimHei'}
matplotlib.rc('font', **font)
# 图像路径
img_path = 'lenna.bmp'
# 按灰度图像格式读入
source = cv2.imread(img_path, cv2.IMREAD_GRAYSCALE)
# 二进制阈值化
_, a = cv2.threshold(source, thresh=127, maxval=255, type=cv2.THRESH_BINARY)
# 反二进制阈值化
_, b = cv2.threshold(source, thresh=127, maxval=255, type=cv2.THRESH_BINARY_INV)
# 截断阈值化
_, c = cv2.threshold(source, thresh=127, maxval=255, type=cv2.THRESH_TRUNC)
# 阈值化为0
_, d = cv2.threshold(source, thresh=127, maxval=255, type=cv2.THRESH_TOZERO)
# 反阈值化为0
_, e = cv2.threshold(source, thresh=127, maxval=255, type=cv2.THRESH_TOZERO_INV)
# plt显示图像
imgs = [source, a, b, c, d, e]
titles = ['原图', '二进制阈值化', '反二进制阈值化', '截断阈值化', '阈值化为0', '反阈值化为0']
for idx in range(len(imgs)):
plt.subplot(2,3,idx+1) # 2行3列,将图像放置在第idx+1位置上(从左往右,从上到下计数)
plt.imshow(imgs[idx], cmap='gray')
plt.title(titles[idx])
# 保存图像,bbox_inches='tight'去除边缘空白,dpi设置图像清晰度
plt.savefig('阈值分割.png', bbox_inches='tight', dpi=300)
plt.show()
Python+opencv 阈值分割
最新推荐文章于 2022-07-11 19:30:46 发布