4.1 直方图绘制

OpenCV之直方图绘制(calcHist函数详解) 目录1.直方图的定义2.calcHist()函数说明3.绘制直方图3.1 读取原图像并检查图像是否读取成功3.2 定义直方图参数并计算直方图3.3 绘制直方图4.关于BGR直方图的绘制4.1 读取原图像并检查图像是否读取成功4.2 分通道显示4.3 分B,G,R计算直方图4.4 绘制直方图 1.直方图的定义 要理解直方图,绕不开“亮度”这个概念。人们把亮度分为0到255共256个数值,数值越大,代表的亮度越高。其中0代表纯黑色的最暗区域,255表示最亮的纯白色,而中间的数字就是不同亮度的灰色。人们还进一步把 阅读详情

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

本章我们开始介绍直方图相关知识


1. 什么是直方图

话不多说,直接上公式:

  • 公式一(数量的统计):
    h ( r k ) = n k k = 0 , 1 , 2 , 3 , . . . L − 1 k 表示灰度图像的像素值 n k 表示图像中像素值为 k ( 或者区间 ) 的像素的个数 \begin{aligned} h(r_k)&=n_k \quad k=0,1,2,3,...L-1 \\ &k\quad表示灰度图像的像素值 \\ &n_k\quad表示图像中像素值为k(或者区间)的像素的个数 \end{aligned} h(rk​)​=nk​k=0,1,2,3,...L−1k表示灰度图像的像素值nk​表示图像中像素值为k(或者区间)的像素的个数​
  • 公式二(概率统计):
    p ( r k ) = h ( r k ) M ∗ N = n k M ∗ N M , N 表示灰度图像的行数和列数 n k 表示图像中像素值为 k ( 或者区间 ) 的像素的个数 根据 公式可以得知 p ( r k ) 的总和是 1 \begin{aligned} p(r_k)&=\frac{h(r_k)}{M*N}=\frac{n_k}{M*N} \\ &M,N\quad表示灰度图像的行数和列数 \\ &n_k\quad表示图像中像素值为k(或者区间)的像素的个数 \\ 根据&公式可以得知p(r_k)的总和是1 \end{aligned} p(rk​)根据​=M∗Nh(rk​)​=M∗Nnk​​M,N表示灰度图像的行数和列数nk​表示图像中像素值为k(或者区间)的像素的个数公式可以得知p(rk​)的总和是1​
    简单一句话就是,直方图是统计像素的,统计某一个灰度级别的像素有多少个,并将统计的结果以图表的方式绘制出来。

2. 直方图绘制

2.1 直方图统计代码

import numpy as np
import matplotlib.pyplot as plt
import cv2 as cv

if __name__ == '__main__':
    # 读取灰度图像
    imgGray1 = cv.imread('Image/Fig0401.tif', 0)
    imgGray2 = cv.imread('Image/Fig0402.tif', 0)
    imgGray3 = cv.imread('Image/Fig0403.tif', 0)
    imgGray4 = cv.imread('Image/Fig0404.tif', 0)

    hist1 = cv.calcHist([imgGray1], [0], None, [256], [0, 256])
    hist2 = cv.calcHist([imgGray2], [0], None, [256], [0, 256])
    hist3 = cv.calcHist([imgGray3], [0], None, [256], [0, 256])
    hist4 = cv.calcHist([imgGray4], [0], None, [256], [0, 256])

    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.figure(figsize=(10, 5))
    titleList = ["暗图像", "亮图像", "低对比度图像", "高对比度", "直方图", "直方图", "直方图", "直方图"]
    imageList = [imgGray1, imgGray2, imgGray3, imgGray4, hist1, hist2, hist3, hist4]
    for i in range(4):
        plt.subplot(2, 4, i + 1), plt.title(titleList[i]), plt.axis('off')
        plt.imshow(imageList[i], vmin=0, vmax=255, cmap='gray')

    for i in range(4,8):
        plt.subplot(2, 4, i + 1), plt.title(titleList[i])
        plt.plot(imageList[i], color='r')
    plt.tight_layout()
    plt.savefig("Image/tmp.png")
    plt.show()

2.2 直方图绘制效果

在这里插入图片描述
从上图中可以看出:

  • 较暗的图像直方图集中在灰度级低的区域
  • 较亮的图像直方图集中在灰度级高的区域
  • 对比度低的图像灰度等级比较集中
  • 对比度高的图像灰度等级比较分散
Python Pandas 图形绘制(二):直方图 直方图(Histogram)又称质量分布图。 经常用来表示数据的分布情况。 一般用横轴表示数据类型(区间),纵轴表示分布情况(频数)。 Pandas 图形绘制(二):直方图1. 对单列数据绘制直方图 df.hist2. 对所有数据绘制多子图直方图 df.hist3. 累计直方图 cumulative=True4. 交叉直方图/重叠显示直方图 df.plot.hist5. 堆叠直方图/叠加显示直方图 stacked=True6. 水平直方图 orientation='horizontal' 1. 对单列数据绘 阅读详情

相关推荐

分布(一)利用python绘制直方图

利用python绘制直方图

微信知乎搜索HsuHeinrich 7195

直方图 - 1 : 查找、绘制、分析!! OpenCV-Python v4.7.0

学习那么什么是直方图?你可以把直方图看作是一种示意图或者曲线,它可以让你对图像的强度分布有一个总体的了解。它是一个在X轴上有像素值(范围从0到255,不一定),在Y轴上有图像中相应像素数的图。它只是理解图像的另一种方式。通过观察图像的直方图,你可以获得关于该图像的对比度、亮度、强度分布等的直觉。今天,几乎所有的图像处理工具都提供直方图的功能。下面是上的一张图片,我建议你访问该网站了解更多细节。你可以看到图像和它的直方图。(记住,这个直方图是为灰度图像绘制的,不是彩色图像)。

hirshdz327的博客 196

C++OpenCV下绘制灰度直方图

C++OpenCV下绘制灰度直方图

mapleleaf2的博客 5512

win10+Python3.7.3+OpenCV3.4.1入门学习(十三 直方图处理)————13.2 使用Numpy绘制直方图

Python版本是Python3.7.3,OpenCV版本OpenCV.3.4.1,开发环境为PyCharm 13.2 使用Numpy绘制直方图 模块matplotlib.pyplot提供了一个类似于MATLAB绘图方式的框架,可以使用其中的matplotlib.pyplot.hist()函数(以下简称为hist()函数)来绘制直方图。 此函数的作用是根据数据源和灰度级分组绘制直方图。其基本语法格...

qq_951274168的博客 395

直方图的绘制 基于python-matplotlib库(1)

大家好,我是侯小啾!今天分享的内容是,如何使用python的matplotlib库绘制直方图。1.关于直方图直方图 也称 质量分布图,虽然看起来像柱状图,实际上区别又很大。直方图通常横轴表示数据类型,纵轴表示各数据类型的分布情况。直方图又可以分为频数分布直方图和频率分布直方图。其绘制方法并无多少差异,只是描述的事件有所不同。频数分布直方图描述的是某事件的数量,而频率分布则描述的是其发生的频率。而关于频率分布直方图,又可以理解为是“密度图”的一种。

m0_60707708的博客 1118

(七)模拟掷骰子4.0-----matplotlib画直方图

案例描述 • 1.0功能:模拟抛掷1个骰子,并输出其结果 • 2.0功能:模拟抛掷2个骰子,并输出其结果 • 3.0功能:可视化抛掷2个骰子的结果 • 4.0功能:对结果进行简单的数据统计和分析 案例分析 • 简单的数据统计分析 :matplotlib直方图 直方图 • 直方图是一种对数据分布情况的图形表示 • 首先要对数据进行分组,然后统计每个分组内数据的数量。 • 作用: 1.显示各分组频率或...

MaYuHuaw的博客 1006

win10+Python3.7.3+OpenCV3.4.1入门学习(十三 直方图处理)————13.3 使用OpenCV绘制直方图

Python版本是Python3.7.3,OpenCV版本OpenCV.3.4.1,开发环境为PyCharm 13.3 使用OpenCV绘制直方图 OpenCV提供了函数cv2.calcHist()用来计算图像的统计直方图,该函数能统计各个灰度级的像素点个数。利用matplotlib.pyplot模块中的plot()函数,可以将函数cv2.calcHist()的统计结果绘制成直方图。 1.用cv2...

qq_951274168的博客 483

ArcGIS标注(二分式、三分式、条件分类标注、上下标、牵引线、文字格式化…)

ArcGIS中的各种标注方法、可能遇到的问题和细节。

m0_73306837的博客 5259

【OpenCV 4】图像直方图计算与绘制

OpenCV 4.1.0 图像直方图计算与绘制(C++代码演示)。 编程环境:OpenCV 4.1.0 + Visual Studio 2017

风语留痕 986

旋转因子量化仿真

在单bit接收机中,通过量化FFT核函数来简化计算,将复数坐标中旋转因子单位圆上的点近似到正方形四个边上,就能够用累加实现复数乘法,从而避免使用DSP乘法器。通过仿真查看不同阶的核函数简化效果。

CyberInversion的博客 3102

避坑指南:RK3568双网口RMII模式DTS配置常见错误与调试技巧

本文详细解析了RK3568双网口RMII模式DTS配置中的常见错误与调试技巧,涵盖时钟配置、PHY识别、复位时序等关键问题。通过实战案例和系统化调试方法,帮助开发者快速解决百兆以太网连接不稳定、PHY识别失败等典型问题,提升开发效率。

weixin_42549037的博客 343

nhanes数据库挖掘教程4-ggsurvey包对插补后数据绘制条形图、箱线图、直方图(1)

上期我们已经介绍了对nhanes数据库数据进行多重插补,这次我们介绍一下怎么对插补后数据进行分析,先介绍ggsurvey包对插补后数据绘制条形图、箱线图、直方图,我们上次插补生成了5个插补数据,我们导入其中一个。本次分享就到这里了,仅供参考,图形的细节、颜色还可以进一步调整,有空再介绍一下,有兴趣的也可以自己研究一下。数据中包含有缺失值插补的信息,这部分我们绘图并不需要,先删掉,并把分类变量转成因子。绘制年龄的条形图,绘制之前需对年龄分段,在生成调查数据前分段也可以。

dege857的博客 1354

【ros】ROS1的安装和相关使用方法

主要学习ros相关内容

Greary的博客 2376

win10+Python3.7.3+OpenCV3.4.1入门学习(十三)————13.4 使用掩膜绘制直方图

Python版本是Python3.7.3,OpenCV版本OpenCV.3.4.1,开发环境为PyCharm 13.4 使用掩模绘制直方图 在函数cv2.calcHist()中,参数mask用于标识是否使用掩模图像。当使用掩模图像获取直方图时,仅获取掩模参数mask指定区域的直方图。 1.掩模处理是怎么回事 首先,我们来看掩模处理的基本形式。在下图中,左图是原始图像O,中间的是掩模图像M,右图是使...

qq_951274168的博客 522

Autosar诊断实战系列02-Dem(DTC&Event)要点及配置开发详解

Dem模块及其与Dcm等其他模块的交互是整个诊断Stack的重中之重,本文先对与其他模块的交互逻辑进行介绍,有一定掌握后继续重点介绍配置部分的开发。

initiallizer的博客 3330

uniapp - 实现苹果App打包上架App Store应用商店详细教程,详解Hbuilder打包编译ipa发布上传到苹果ios软件商店全流程,提供云打包/离线本地打包ios、申请IOS苹果证书方法

uni-app,苹果ios,苹果app,打包编译,appstore应用商店,ipa发布到软件商店,uniapp的app苹果应用商店上架,上架苹果APPStore,uniApp打包的ipa文件上传到商店,上架苹果商城,审核失败,被拒绝,UniApp打包ipa文件,上架iOSAppStore流程指南,最新详细教程最全,Hbuilder打包发布iosapp,苹果云打包上线全过程,云打包IPA并上传到商店,打包iOSipa文件后怎么发布到应用商店,苹果证书申请教程,ios证书申请,mac电脑,审核很久

🏆 前端领域优质创作者 1万+

OpenCV学习——绘制图像灰色直方图

一、环境 OpenCV3.4.1 VS2015 二、代码 #include <opencv2/opencv.hpp> using namespace std; #pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"") #define cvQueryHistValue_1D( hist...

YBAdiam的博客 599

C/C++小宇宙代码(完整代码)

C语言实现小宇宙的完整代码。

AIGC 2523

Pandas读取Excel绘制直方图(四十一)

直方图(Histogram): 直方图是数值数据分布的精确图形表示,是一个连续变量(定量变量)的概率分布的估计,它是一种条形图。 为了构建直方图,第一步是将值的范围分段,即将整个值的范围分成一系列间隔,然后计算每个间隔中有多少值。 1. 读取数据 波斯顿房价数据集 import pandas as pd import numpy as np df = pd.read_excel("./datas/boston-house-prices/housing.xlsx") df.info() df["MEDV"

小龙龙品牌的博客 1276

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

python画直方图代码-Python绘制直方图及子图的方法分析(代码示例)

本篇文章给大家带来的内容是关于Python绘制直方图及子图的方法分析(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。1、直方图的绘制也需要用到matplotlib下的pylab,只不过在绘制折线图时我们采用的是plot(),而绘制直方图时我们需要采用hist()。由于在绘制过程中缺少真实数据,我在这里采用np.random.normal(a,b,c)生成的随机数绘制直方...

weixin_37988176的博客 2306

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

R语言绘制频率直方图

频率直方图是数据统计中经常会用到的图形展示方式,同时在生物学分析中可以更好的展示表型性状的数据分布类型;R基础做图中的hist函数对单一数据的展示很方便,但是当遇到多组数据的时候就不如ggplot2绘制来的方便。 *** 1.基础做图hist函数 hist(rnorm(200),col='blue',border='yellow',main='',xlab='') 1.1 多图展示 ...

Pele_Lee的博客 2万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Matlab中直方图的绘制histogram函数

Matlab中直方图的绘制 histogram函数 直方图属于数值数据的条形图类型,将数据分组为 bin。创建 Histogram 对象后,可以通过更改直方图的属性值修改它的各个方面。 histogram(X) histogram(X,nbins) histogram(X,edges) histogram('BinEdges',edges,'BinCounts',counts) histogram(C) histogram(C,Categories) histogram('Categories',Categ

iii66yy的博客 10万+

超详细的Python matplotlib 绘制直方图 赶紧收藏

前言 经过前面对 matplotlib 模块从底层架构、基本绘制步骤等学习,我们已经学习了折线图、柱状图的绘制方法。 在分析数据的时候,我们会根据数据的特点来选择对应图表来展示,需要表示质量这一概念,需要用直方图。 本期,我们将学习matplotlib 模块绘制直方图相关属性和方法,Let‘s go~ 1. 直方图概述 什么是直方图? 直方图是一种可视化表示数据在连续间隔或者特定时间段内容的分布情况 直方图又称为质量分布图,属于条行图的一种 直方图x轴表示数据类型,纵轴表示

weixin_54556126的博客 8万+

matplotlib 绘制直方图

1.直方图 直方图是用一系列不等高的长方形来表示数据,宽度表示数据范围的间隔,高度表示在给定间隔内数据出现的频数,长方形的高度跟落在间隔内的数据数量成正比,变化的高度形态反映了数据的分布情况。 2.导入相关库 Matplotlib 是 Python 的绘图库。 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。 我们一般用到的是 Matplotlib 的 Pyplot 函数集合。 from matplotlib import pyplot as plt Pyplot 中使用

xiaofeiyu321的博客 1万+

直方图实例详解(颜色直方图、灰度直方图)

一、前言 二、直方图的概念 三、颜色直方图 (1)、颜色直方图定义 (2)、颜色直方图使用方法 (3)、绘制颜色直方图 ①、绘制普通颜色直方图 ②、绘制灰度图像直方图 ③、绘制彩色图像直方图 ④、不同亮度图片直方图对比图 ⑤、彩色图像直方图(绘制在同一张图) 四、灰度直方图 (1)、灰度直方图定义 (2)、灰度直方图函数 (3)、灰度直方图实例 ①、绘制普通灰度直方图 ②、绘制多通道图像直方图 五、使用掩模绘制直方图 ①、绘制方形掩模图像及直方图 ②、绘制圆形掩模图像及直方图 六、总结

逆境清醒的博客 3万+
上一篇: 3.4 图像灰度变换之分段线性变换
下一篇: 4.2 直方图均衡化
Four o'clock
博客等级 码龄8年 305粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值