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 pltimg =cv2.imread("test.jpg", 0)
# 未选定位置全为黑色
mask = np.zeros(img.shape[:2], np.uint8)
# 选定位置全为白色
mask[50:100, 50:100] = 255cv2.imshow("mask",mask)
cv2.waitKey()
cv2.destroyAllWindows()

运行结果:


图中的②操作

import cv2
import numpy as np
from matplotlib import pyplot as pltimg =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 pltimg =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传入进去,就相当于做了这么个效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/422088.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

消息队列之王——Kafka

Zookeeper 在学习kafka之前,我们需要先学习Zookeeper,那Zookeeper是什么呢?Zookeeper是一个开源的分布式的,为分布式框架提供协调服务的Apache项目。 Zookeeper 工作机制 Zookeeper从设计模式角度来理解:是一个基于观…

40尺货柜可以装载多少张建筑模板?

在建筑行业,40尺货柜一直以其标准化、便捷的特点成为建材运输的首选。然而,对于建筑模板这样的大型且薄型货物,如何在40尺货柜中实现最高效的装载一直是一项具有挑战性的任务。让我们一起揭秘,40尺货柜究竟能够装载多少张建筑模板…

helm---自动化一键部署

什么是helm?? 在没有这个helm之前,deployment service ingress helm的作用就是通过打包的方式,把deployment service ingress 这些打包在一块,一键式部署服务,类似于yum 官方提供的一个类似于安装仓库的功能,可以实…

飞书+ChatGPT+cpolar搭建企业智能AI助手并实现无公网ip远程访问

文章目录 推荐 前言环境列表1.飞书设置2.克隆feishu-chatgpt项目3.配置config.yaml文件4.运行feishu-chatgpt项目5.安装cpolar内网穿透6.固定公网地址7.机器人权限配置8.创建版本9.创建测试企业10. 机器人测试 推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂…

HCIA——21C/S、P2P、peer的选择

学习目标: 计算机网络 1.掌握计算机网络的基本概念、基本原理和基本方法。 2.掌握计算机网络的体系结构和典型网络协议,了解典型网络设备的组成和特点,理解典型网络设备的工作原理。 3.能够运用计算机网络的基本概念、基本原理和基本方法进行…

【JS逆向学习】国家加密系列-SM算法实例

SM系列 1、国家加密算法介绍 事实上从 2010 年开始,我国国家密码管理局就已经开始陆续发布了一系列国产加密算法,其中SM1、SM4、SM7、祖冲之密码(ZUC)是对称算法;SM2、SM9是非对称算法;SM3是哈希算法。目…

旧路由重置新路由设置新路由设置教程|适用于自动获取IP模式

前言 如果你的光猫是直接拨号(路由模式)的,就可以按照本教程进行路由重置或者更换新路由器。 本文章适合电脑小白,请注意每一步哦! 注意事项 开始之前需要确认光猫是桥接模式还是路由模式。如果光猫是路由模式&…

37-WEB漏洞-反序列化之PHPJAVA全解(上)

WEB漏洞-反序列化之PHP&JAVA全解(上) 一、PHP 反序列化原理二、案例演示2.1、无类测试2.1.1、本地2.1.2、CTF 反序列化小真题2.1.3、CTF 反序列化类似题 2.2、有类魔术方法触发2.2.1、本地2.2.2、网鼎杯 2020 青龙大真题 三、参考资料 一、PHP 反序列…

码农维权——案例分析之违法解除劳动合同(二)

目录 一、背景 二、案例来源 三、被【非法】解除《劳动合同》后可以主张哪些诉求? 四、案例分析:违法解除劳动合同 A、公司的主张: B、公司的主要证据(公司单方面提交的,法院不一定认可采纳)&…

龟兔再跑

欢迎来到程序小院 龟兔再跑 玩法&#xff1a;乌龟跳绳&#xff0c;点击鼠标左键乌龟跳跃&#xff0c;两只乌龟一直不停的甩绳子&#xff0c;另外一只乌龟从中跳过&#xff0c;赶快去跳绳吧^^。开始游戏https://www.ormcc.com/play/gameStart/255 html <div class"mai…

kali下-MSF-ftp_login模块破解FTP账号及密码

一、环境准备 两台设备在同一个网络内 一台kali系统&#xff1a;192.168.10.128 一台winserver2016&#xff1a;192.168.10.132 二、MSF介绍 metasploit 全称是The Metasploit Framework&#xff0c;又称MSF&#xff0c;是Kali 内置的一款渗透测试框架&#xff0c;也是全球…

【linux】 查看 Linux 重启历史记录(reboot)

了解 Linux 重启日志 /var/log 目录隐藏着 Linux 日志机制的核心信息&#xff0c;它是记录系统活动的宝贵仓库。然而&#xff0c;仅仅有日志还不够&#xff0c;真正的难题在于&#xff0c;如何从大量数据中提炼出与系统重启相关的关键信息。 在 /var/log 目录中&#xff0c;可…