目录
1.设置掩膜
import cv2
import numpy as np
import matplotlib.pyplot as plt
kele = cv2.imread('kele.png' , cv2.IMREAD_GRAYSCALE)
cv2.imshow('kele', kele)
cv2.waitKey (100000)
mask = np.zeros (kele.shape[:2],np.uint8)
# 初始化掩膜,创建一个与kele图像相同大小的全零数组,并将其数据类型设为无符号8位整型
mask[50:450,30:470] = 255
# 这行代码将从(50, 450)到(30, 470)范围的像素值设置为255,即在这个范围内创建了一个白色方块形状的掩膜,其他区域是黑色(像素值为0)。
cv2.imshow('mask' ,mask)
cv2.waitKey(100000)
2.绘制图像
kele_mask = cv2.bitwise_and (kele , kele , mask=mask)
# 使用bitwise_and()函数,将kele图像与掩膜mask进行按位与操作,保留掩码中为255的区域,其他区域置为0,最终得到一个根据掩码处理后的图像kele_mask。
cv2.imshow('kele_mask' ,kele_mask)
cv2.waitKey (100000)
3.绘制直方图
kele_hist_mask = cv2.calcHist([kele],[0], mask, [256],[0,256])
# 使用calcHist()函数计算kele图像的灰度直方图,其中仅考虑掩码内的区域
# 参数[kele]表示要计算直方图的图像
# [0]表示只考虑单通道的灰度值,mask表示使用的掩码
# [256]表示灰度级别的数量,[0, 256]表示灰度级别的范围0-255
kele_hist_mask = kele_hist_mask.ravel()
# 将灰度直方图数据整理为一维数组
x = np.arange(256)
# 创建256个灰度级别的数组作为x轴
plt.bar(x, kele_hist_mask)
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.xlabel('灰度级别')
plt.ylabel('像素数')
plt.title('灰度直方图')
plt.show()
4.效果展示
原图
掩膜展示
设置掩膜后的图像
直方图展示