OpenCV学习-P29-P32 Opencv直方图均衡化、掩膜

OpenCV学习-P29-P32 Opencv直方图均衡化及掩膜

1 直方图

直方图原理:统计图像各个灰度区间的像素数
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述在这里插入图片描述
cv2.calcHist([img],[0],None,[256],[0,256])
[0]表示通道,[256]表示bin个数,[0,256]表示灰度值取值范围,参数需要加[]

img= cv2.imread(r'.\\20220822162647.jpg',0)

histr=cv2.calcHist([img],[0],None,[256],[0,256])
plt.figure(figsize=(10,6),dpi=100)
plt.plot(histr)
plt.show()

如果需要提取图像某部分直方图,可以给calcHist添加掩膜
在这里插入图片描述

img= cv2.imread(r'.\\20220822162647.jpg',0)

mask=np.zeros(img.shape[:2],np.uint8)
mask[200:250,100:300]=255
masked_img=cv2.bitwise_and(img,img,mask=mask)
histr=cv2.calcHist([img],[0],None,[6],[0,256])
fig,axes=plt.subplots(nrows=2,ncols=2,figsize=(10,8))

axes[0,0].imshow(img)
axes[0,0].set_title("原图")

axes[0,1].imshow(mask)
axes[0,1].set_title("蒙版数据")

axes[1,0].imshow(masked_img)
axes[1,0].set_title("掩膜后数据")

axes[1,1].plot(histr)
axes[1,1].set_title("灰度直方图")
axes[1,1].grid()

plt.rcParams['font.sans-serif']=['SimHei']
plt.show()

2 直方图均衡化

直方图均衡化可提高图像整体对比度,在曝光过度或不足的图像中可以更好的突出细节
在这里插入图片描述
在这里插入图片描述

3 直方图自适应均衡化

dst=cv.equalizeHist(img)
自适应直方图均衡化:全局直方图均衡化后,可能会丢失部分细节信息,如下图人脸原来是清晰的,均衡化后太亮就不清晰了,所以需要将图像分为很多小块(称为tiles,在opencv中默认为8*8),对每个小块进行直方图均衡化,
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值