Opencv中cv2.calcHist的mask的使用方法

引入

我们用来画直方图函数:

cv2.calcHist([img], [0], mask, [256], [0, 256])

有一个mask属性.我们应该如何去使用它呢,以及他的作用是什么

mask顾名思义就是一个遮罩层,我们可以选择图片上我们想要的位置进行画直方图


实际用法介绍

首先我们用一张图片来进行讲解

陶大郎的耳朵!

我们这个时候想要截取耳朵上选定的部分,我们应该怎么做呢?


原理介绍


图中的①操作:

import cv2
import numpy as np
from matplotlib import pyplot as plt

img =cv2.imread("test.jpg", 0)
# 未选定位置全为黑色
mask = np.zeros(img.shape[:2], np.uint8)
# 选定位置全为白色
mask[50:100, 50:100] = 255

cv2.imshow("mask",mask)
cv2.waitKey()
cv2.destroyAllWindows()

运行结果:


图中的②操作

import cv2
import numpy as np
from matplotlib import pyplot as plt

img =cv2.imread("test.jpg", 0)
mask = np.zeros(img.shape[:2], np.uint8)
mask[50:100, 50:100] = 255
# 新加入
masked_img = cv2.bitwise_and(img,img,mask=mask)
cv2.imshow("masked_img",masked_img)
cv2.waitKey()
cv2.destroyAllWindows()

只在①的基础上加上了 masked_img = cv2.bitwise_and(img,img,mask=mask)

运行结果


使用我们的mask进行直方图绘制

import cv2
import numpy as np
from matplotlib import pyplot as plt

img =cv2.imread("test.jpg", 0)
# 未选定位置全为黑色
mask = np.zeros(img.shape[:2], np.uint8)
# 选定位置全为白色
mask[50:100, 50:100] = 255
hist = cv2.calcHist([img], [0], mask, [256], [0, 256])
plt.plot(hist, color = 'r')
plt.xlim([0, 256])
plt.show()
cv2.calcHist([img], [0], None, [256], [0, 256])变为了
cv2.calcHist([img], [0], mask, [256], [0, 256])

我们加上了我们定义的mask

注意:我们把 masked_img = cv2.bitwise_and(img,img,mask=mask) 给去除了,因为在上面我们知识用它来给大家展示效果,在运用到直方图的时候只需要把我们的mask传入进去,就相当于做了这么个效果

### 回答1: cv2.calcHistOpenCV 的一种图像处理函数,用于计算图像直方图。直方图是一种将像素强度值分布可视化的方法,它可以用于图像处理、计算机视觉和图像分析等方面。cv2.calcHist 函数可以计算图像在一个或多个维度上的直方图,可以指定直方图的大小和范围,还可以选择计算直方图的掩码。该函数通常与 cv2.imshow 和 cv2.normalize 函数一起使用,以将直方图可视化并对其进行归一化处理。 ### 回答2: cv2.calcHistOpenCV用于计算图像直方图的函数。直方图是用来表示图像每个像素值出现的频率的统计图。直方图通常用来分析图像的亮度、色彩分布等特征。 cv2.calcHist函数的参数包括: - images:输入图像,图像类型为uint8或float32。 - channels:指定计算直方图的通道列表。对于灰度图像,通道值为[0];对于彩色图像,通道值可以是[0]、[1]、[2]分别代表蓝色、绿色和红色通道。 - mask:指定计算直方图的掩码图像,如果没有则为None。 - histSize:指定直方图的大小,表示将图像的像素分成多少个bin,通常为[256]。 - ranges:指定直方图的像素值范围,通常为[0, 256]。 cv2.calcHist函数返回一个表示直方图的numpy数组。 使用cv2.calcHist函数可以在图像处理应用广泛。例如,可以利用直方图来进行图像增强、图像匹配、目标跟踪等应用。通过计算两幅图像的直方图可以进行图像匹配,通过直方图的差异可以进行目标跟踪。还可以通过直方图均衡化来增强图像的对比度和亮度。总之,cv2.calcHist是一种非常有用的图像处理函数,可以用于图像的分析、增强和处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhuyua

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值