掩膜是用选定的图像、图形或物体,对要处理的图像进行遮挡,来控制图像处理的区域。
在数字图像处理中,我们通常使用二维矩阵数组进行掩膜。掩膜是由0和1组成一个二进制图像,利用该掩膜图像要处理的图像进行掩膜,其中1值的区域被处理,0值区域被屏蔽,不会处理。
掩膜的主要用途是:
import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt
# 解决中文显示问题
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 1直接以灰度图的方式读入
img = cv.imread('./images/e.jpg',0)
# 2创建蒙版
mask = np.zeros(img.shape[:2], np.uint8)
mask[400:650, 200:500]=255
# 3掩模
masked_img = cv.bitwise_and(img, img, mask = mask)
# 4统计掩膜后图像的灰度图
mask_his = cv.calcHist([img], [0], mask, [256], [1, 256])
# 5图像展示
fig, axes=plt.subplots(nrows=2, ncols=2, figsize=(10, 8))
axes[0, 0].imshow(img, cmap=plt.cm.gray)
axes[0, 0].set_title("原图")
axes[0, 1].imshow(mask, cmap=plt.cm.gray)
axes[0, 1].set_title("蒙版数据")
axes[1, 0].imshow(masked_img, cmap=plt.cm.gray)
axes[1, 0].set_title("掩膜后数据")
axes[1, 1].plot(mask_his)
axes[1, 1].grid()
axes[1, 1].set_title("灰度直方图")
plt.show()