设置图像掩膜并绘制对应直方图

目录

1.设置掩膜

2.绘制图像

3.绘制直方图

4.效果展示

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.效果展示

原图

掩膜展示

设置掩膜后的图像

直方图展示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值