OpenCV-41 使用掩膜的直方图

一、掩膜

掩膜即为与原图大小一致的黑底白框图。

如何生成掩膜?

  • 先生成一个全黑的和原始图片大小一样大的图片。mask = np.zeros(img.shape, np.uint8)
  • 将想要的区域通过索引方式设置为255.mask[100:200, 200:300]

示例代码如下:

import cv2
import matplotlib.pyplot as plt
import numpy as nplena = cv2.imread("beautiful women.png")
# 变成黑白图像
gray = cv2.cvtColor(lena, cv2.COLOR_BGR2GRAY)
# 生成掩膜图像
mask = np.zeros(gray.shape, np.uint8)
# 设计想要统计直方图的区域
mask[200:500, 200:500] = 255
# 进行与运算
# gray与gray进行与运算还是gray, mask的作为为,gray先于gray做与运算,结果再和mask做与运算
img_and = cv2.bitwise_and(gray, gray, mask=mask)
hist_mask = cv2.calcHist([gray], [0], mask, [256], [0,255])
hist_gray = cv2.calcHist([gray], [0], None, [256], [0,255])
plt.plot(hist_mask, label = "mask")
plt.plot(hist_gray,label = "gray")
plt.legend()
plt.show()cv2.imshow("mask", mask)
cv2.imshow("gray", gray)
cv2.imshow("and", img_and)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出结果如下:

注意点:

0与任何东西进行与运算都为0

255与非0的进行与运算还是255

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

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

相关文章

JDK8新增的时间

设计更合理,功能更丰富,使用更方便,都是不可变的对象,修改后会返回新的事件对象不会丢失最开始的时间,线程安全,能精确到毫秒、纳秒。 这三个类都有一个静态方法now():获取系统当前时间对应的该…

智能传感器阅读笔记-智能传感器的发展历程、发展趋势及方向

智能传感器的发展历程 第一代智能传感器 第一代智能传感器是数字式传感器,指改造A/D转换模块,并采用数字技术进行信号处理,使输出信号为数字信号(或数字编码)的传感器,主要由放大器、A/D转换模块、微处理…

docker (四)-docker网络

默认网络 docker会自动创建三个网络,bridge,host,none bridge桥接网络 如果不指定,新创建的容器默认将连接到bridge网络。 默认情况下,使用bridge网络,宿主机可以ping通容器ip,容器中也能ping通宿主机。 容器之间只…

2024-02-16 AIGC-数字人-阿里巴巴国际站-指定的数字人平台

摘要: 2024-02-16 AIGC-数字人-阿里巴巴国际站-指定的数字人平台 阿里巴巴国际站-指定的数字人平台 全部服务 阿里巴巴 外贸服务市场 (alibaba.com) 一. 北京网聚电商AI数字人直播 北京网聚电商AI数字人直播 – 阿里巴巴外贸服务市场 – 外贸服务平台 (alibaba.com) 二. 普特…

用tensorflow模仿BP神经网络执行过程

文章目录 用矩阵运算仿真BP神经网络y relu ( (X․W ) b )y sigmoid ( (X․W ) b ) 以随机数产生Weight(W)与bais(b)placeholder 建立layer函数改进layer函数,使其能返回w和b github地址https://github.com/fz861062923/TensorFlow 用矩阵运算仿真BP神经网络 impo…

定时器外部时钟

一、相较于内部时钟中断改动: 1.Timer.c RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //开启GPIOA的时钟/*GPIO初始化*/GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode GPIO_Mode_IPU;GPIO_InitStructure.GPIO_Pin GPIO_Pin_…

Day-01-02

项目框架搭建 1. 创建父工程 父工程:xuecheng-plus-parent 父工程中没有代码,不用去依赖其它的包,它的作用是限定其它子工程依赖包的版本号,在dependencyManagement 中去编辑即可。 在父工程中只需保留pom.xml文件以及自动生成…

AI实景无人直播 矩阵系统

矩阵系统:重塑未来的组织与沟通在不断变化的世界中,我们需要的不仅是适应变化的能力,更需要预见未来的视角。矩阵系统,正是一个能够助力我们应对复杂环境、实现高效组织和沟通的工具。一、矩阵系统的核心价值矩阵系统,…

【JVM篇】ThreadLocal中为什么要使用弱引用

文章目录 🍔ThreadLocal中为什么要使用弱引用⭐总结 🍔ThreadLocal中为什么要使用弱引用 ThreadLocal可以在线程中存放线程的本地变量,保证数据的线程安全 ThreadLocal是这样子保存对象的: 在每个线程中,存放了一个…

Python一级考试笔记

Python一级考试笔记【源源老师】 前置知识:(了解即可) Python常见的几种编程环境:IDLE(自带)、Visual Studio Code、Jupyter、pyCharm; python版本:python3 和 python2(…

SSM框架,spring-aop的学习

代理模式 二十三种设计模式中的一种,属于结构型模式。它的作用就是通过提供一个代理类,让我们在调用目标方法的时候,不再是直接对目标方法进行调用,而是通过代理类间接调用。让不属于目标方法核心逻辑的代码从目标方法中剥离出来…

【开源】基于JAVA+Vue+SpringBoot的班级考勤管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统基础支持模块2.2 班级学生教师支持模块2.3 考勤签到管理2.4 学生请假管理 三、系统设计3.1 功能设计3.1.1 系统基础支持模块3.1.2 班级学生教师档案模块3.1.3 考勤签到管理模块3.1.4 学生请假管理模块 3.2 数据库设…