OpenCv之图像直方图

目录

一、基本概念

二、使用OpenCv统计直方图

 三、使用掩膜的直方图


一、基本概念

图像直方图是用一表示教字图像中亮度分布的直方图,标绘了图像中每个高度值的像素数。可以借助观察该有方图了解需要如何调整亮度分布的直方图。这种直方图中,横坐标的左侧为纯黑、较暗的区域,而右侧为较亮、纯白的区域。因此,一张较暗图片的图像直方图中的数据多集中于左侧和中间部分,而整体明亮、只有少量阴影的图像则相反

  • 横坐标:图像中各个像素点的灰度级
  • 纵坐标:具有该灰度级的像素个数

案例直方图如下:

直方图术语:

  • dims:需要统计的特征的数目。例如:dims=1,表示我们仅统计灰度值。
  • bins:每个特征空间子区段的数目。
  • range:统计灰度值的范围,一般为[0,255]

二、使用OpenCv统计直方图

 参考函数如下:

 案例代码如下:

import cv2
import numpy as np
import matplotlib.pyplot as pltimg = cv2.imread('6.jpg')histb = cv2.calcHist([img],[0],None,[256],[0,255])
histg = cv2.calcHist([img],[1],None,[256],[0,255])
histr = cv2.calcHist([img],[2],None,[256],[0,255])# 将直方图画出来
plt.plot(histb,color = 'b')
plt.plot(histg,color = 'g')
plt.plot(histr,color = 'r')
plt.legend()
plt.show()

运行结果如下:

 

 三、使用掩膜的直方图

案例代码如下:

 

import cv2
import numpy as np
import matplotlib.pyplot as pltimg = cv2.imread('6.jpg')# 变成黑白图片
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)# 生成掩膜图像
mask = np.zeros(gray.shape,np.uint8)# 设置想要统计直方图的区域
mask[200:400,200:400] = 255hist_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')cv2.imshow('img',img)
# gray与gray做与运算结果还是gray,mask的作用,就是gray与gray先做与运算,结果再和mask做与运算
cv2.imshow('mask_gray',cv2.bitwise_and(gray,gray,mask=mask))cv2.waitKey(0)
cv2.destroyAllWindows()

运行结果如下:

 

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

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

相关文章

设计模式之单例模式

写在前面 本文看下单例设计模式。 写在前面 本文一起看一种创建型设计模式,单例设计模式。 1:介绍 1.1:什么时候单例设计模式 当程序只需要一个对象时使用。 1.2:UML类图 原型设计模式,包含如下元素&#xff1…

12. 一些开发中遇到的SQL问题

文章目录 一些开发中遇到的SQL问题1. sql报11090错误,原因可能是以下错误,在?占位符后有一个空格2. 占位符?的位置不能是表名,否则会无法进行预编译3. mysql中desc是关键字,如果字段名称为desc会报错4. 数据库中时间格…

Apikit 自学日记:如何测试多个关联的 API

肯定会有人好奇,如果有多个关联的 API 如何做测试呢?很简单!在 APIkit 中也有测试多个关联 API 的功能。 1、在流程测试用例详情页中,点击“ 添加测试步骤”,选择“从API文档添加API请求” 2、在对应的项目下选择关联的…

CSDN 周赛 62 期

CSDN 周赛 62 期 参赛体验选择题1234编程题1、题目名称:覆盖面积2、题目名称:机器猫参赛体验 这次没有出填空题,好评。 选择题四个,基本上,对数据库比较熟悉的人,应该都可以全部答对的。 编程题两个,嗯。。。。就是上周偷偷摸摸更新出来的四个题目之二。还以为不会出…

csdn新星计划vue3+ts+antd赛道——利用inscode搭建vue3(ts)+antd前端模板

文章目录 ⭐前言⭐利用inscode免费开放资源💖 在inscode搭建vue3tsant项目💖 调整配置💖 antd 国际化配置💖 用户store💖 路由权限💖 预览 ⭐结束 ⭐前言 大家好,我是yma16,本文分享…

3.10 Bootstrap 标签

文章目录 Bootstrap 标签标签 Bootstrap 标签 下面将讲解 Bootstrap 标签。标签可用于计数、提示或页面上其他的标记显示。使用 class .label 来显示标签&#xff0c;如下面的实例所示&#xff1a; <span class"label label-default">Label</span></…

如何二次封装一个el-table组件并二次复用

*注:示例使用的是vue3和element进行二次封装的 首先我们来看效果图&#xff08;总共可以分为以下几个模块&#xff09;&#xff1a; 表格数据操作按钮区域表格信息提示区域表格主体内容展示区域表格分页区域 表单搜索没有封装在这里是为了降低代码的耦合性(有兴趣的可以查看我…

python实现小波降噪

文章目录 小波分解小波系数小波降噪阈值确定的一些小知识点python 实现小波去噪小波分解 上图为对信号进行3层小波分解,其中,Approximation 为近似小波系数(信号的低频成分),Detail为细节小波系数(信号的高频成分),分解后得到四个小波系数分别为A3,D3,D2,D1。 小波系数 小…

图片速览 DCN K-means-friendly Spaces: Simultaneous Deep Learning and Clustering

本文使用了一种交替更新网络参数和聚类中心的方法。在网络更新完成之后&#xff0c;对于固定的网络参数和 M&#xff0c;再更新当前样本的分配向量。然后根据新的分配结果如式子3.8更新聚类中心&#xff1a; 注&#xff1a;文中还有问题是否能进行凸优化的部分 CG https…

4. Docker之Docker基础知识

Docker是一个平台&#xff0c;简化了在轻量、可移植的容器中构建、打包和部署应用程序的过程。在本节中&#xff0c;我们将介绍Docker的基础知识、其组件以及您需要开始使用的关键命令。 容器是什么&#xff1f; 容器是一个轻量级、独立的可执行软件包&#xff0c;包含运行应…

MySQL日常操作记录

1.查看MySQL版本 select version();2.快速复制表结构&#xff0c;不包含相关主键及约束 create table user_test as select * from user where 12;3.uuid select uuid(),uuid_short();4.替换uuid()里的’-‘为’’ select replace(uuid(),-,);5.md5摘要 select md5(uuid()…

剑指29.顺时针打印矩阵 31 栈的压入,弹出序列 03 数组中的重复数字 53缺失的数字 04二维数组中的查找

class Solution { public:vector<int> spiralOrder(vector<vector<int>>& matrix) { if (matrix.size() 0 || matrix[0].size() 0&#xff09; return {};//必须要写到最前面&#xff0c;因为right和bottom-1就是负数了vector<int> result;int l…

ELK-日志服务【kafka-配置使用】

kafka-01 10.0.0.21 kafka-02 10.0.0.22 kafka-03 10.0.0.23 【1】安装zk集群、配置 [rootes-01 ~]# yum -y install java maven [rootes-01 ~]# tar xf apache-zookeeper-3.5.9-bin.tar.gz -C /opt/[rootes-01 ~]# cd /opt/apache-zookeeper-3.5.9-bin/conf/ [rootes-…

爬虫相关知识与面试题目

常见的反爬虫和应对方法 参考:https://www.cnblogs.com/bsdr/p/5151891.html 0x01 常见的反爬虫 这几天在爬一个网站&#xff0c;网站做了很多反爬虫工作&#xff0c;爬起来有些艰难&#xff0c;花了一些时间才绕过反爬虫。在这里把我写爬虫以来遇到的各种反爬虫策略和应对的…

剑指offer33.二叉搜索树的后序遍历序列

我一开始的想法是&#xff1a;后序遍历是左右根&#xff0c;那么第一个数小于第二个数&#xff0c;第二个数大于第三个数&#xff0c;然后从第三个数开始又循环&#xff0c;显然错了&#xff0c;因为我这种是理想情况&#xff0c;是一个满二叉树。正确的解法是: class Solutio…

正则表达式

一、正则表达式基本介绍 1. 介绍 一个正则表达式&#xff0c;就是用某种模式去匹配字符串的一个公式。很多人因为它们看上去比较古怪而且复杂所以不敢去使用&#xff0c;不过,经过练习后,就觉得这些复杂的表达式写起来还是相当简单的&#xff0c;而且&#xff0c;一旦你弄懂它…

python求解纳什均衡

背景知识 双人纳什均衡求解问题&#xff0c;假设&#xff1a; 玩家 0 0 0&#xff0c;行动 { 0 , ⋯ , m − 1 } \{0, \cdots, m-1\} {0,⋯,m−1}&#xff0c;收益 A ∈ R m n A \in \reals_{}^{m \times n} A∈Rmn​&#xff0c;策略 p ∈ R m 1 p \in \reals_{}^{m \ti…

AA@有理系数多项式@整系数多项式@本原多项式@有理多项式可约问题

文章目录 有理系数多项式本原多项式一般多项式到整系数多项式本原多项式定义高斯引理整系数多项式分解定理推论思路1:思路2:思路3:(废弃) 整系数多项式有理根定理与整根定理爱森斯坦判别法构造任意次数的有理系数不可约多项式 有理系数多项式 有理数域上一元多项式的因式分解.…

Shuffle简单理解

map的结果本身是无序的&#xff0c;但是map输出的结果有序 mapper和reduce是不同的机器&#xff0c;进行了网络传输&#xff0c;所以存在数据拷贝 第二次排序&#xff0c;是将每个reduce对应的task进行排序&#xff0c;然后再进入reduce maptask运行结束&#xff0c;每个mask块…

JS制作一个网页版的猜数字小游戏

一. 网络游戏简介 在输入框内输一个数字&#xff0c;点击后面的“猜”按钮&#xff0c;系统会根据你猜的数字的大小&#xff0c;返回你是猜大猜小还是猜正确&#xff0c;系统还会统计你猜的次数&#xff0c;在猜数字的途中你点击按钮随时可以重新开始游戏 页面框架&#xff1…