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

引入

我们用来画直方图函数:

复制代码
cv2.calcHist([img], [0], mask, [256], [0, 256])

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

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


实际用法介绍

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

陶大郎的耳朵!

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


原理介绍


图中的①操作:

python 复制代码
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()

运行结果:


图中的②操作

python 复制代码
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进行直方图绘制

python 复制代码
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传入进去,就相当于做了这么个效果

相关推荐
姓刘的哦几秒前
FFmpeg/opencv + C++ 实现直播拉流和直播推流(对视频帧进行处理)
c++·opencv·ffmpeg
Gofarlic_OMS1 分钟前
Fluent许可证使用合规性报告自动化生成系统
java·大数据·运维·人工智能·算法·matlab·自动化
github.com/starRTC4 分钟前
Claude Code中英文系列教程16:在GitHub Actions中使用 AWS Bedrock & Google Vertex AI
人工智能
盼小辉丶7 分钟前
视觉Transformer实战 | Data-efficient image Transformer(DeiT)详解与实现
深度学习·计算机视觉·transformer·vit
沛沛老爹7 分钟前
从Web到AI:Agent Skills安全架构实战——权限控制与数据保护的Java+Vue全栈方案
java·开发语言·前端·人工智能·llm·安全架构·rag
AI营销前沿8 分钟前
原圈科技AI营销内容:SaaS案例创作告别低效,效率翻倍
大数据·人工智能
纪伊路上盛名在9 分钟前
Chap2 Neural Networks with PyTorch
人工智能·pytorch·python·深度学习·机器学习
码农汉子10 分钟前
零基础入门】Open-AutoGLM 完全指南:Mac 本地部署 AI 手机助理(原理+部署+优化)
人工智能·macos·智能手机
linmoo198611 分钟前
Langchain4j 系列之三十一 - Observability之入门
人工智能·langchain·observability·langchain4j
小飞大王66612 分钟前
使用nodejs接入ai服务并使用sse技术处理流式输出实现打字机效果
前端·javascript·人工智能