【OpenCV 例程200篇】45. 图像的灰度直方图(cv2.calcHist)

『youcans 的 OpenCV 例程200篇 - 总目录』


【OpenCV 例程200篇】45. 图像的灰度直方图


图像直方图是反映图像像素分布的统计表,横坐标代表像素值的取值区间,纵坐标代表每一像素值在图像中的像素总数或者所占的百分比。 灰度直方图是图像灰度级的函数,用来描述每个灰度级在图像矩阵中的像素个数。

灰度直方图反映了图像中的灰度分布规律,直观地表现了图像中各灰度级的占比,很好地体现出图像的亮度和对比度信息:灰度图分布居中说明亮度正常,偏左说明亮度较暗,偏右表明亮度较高;狭窄陡峭表明对比度降低,宽泛平缓表明对比度较高。

根据直方图的形态可以判断图像的质量,通过调控直方图的形态可以改善图像的质量。

OpenCV 提供了函数 cv2.calcHist 可以计算直方图,Numpy 中的函数 np.bincount 也可以实现同样的功能。

函数说明:

cv2.calcHist(images, channels, mask, histSize, ranges[, hist[, accumulate ]]) → hist

函数 cv2.calcHist 可以计算一维直方图或二维直方图,函数的参数 images, channels, histSize, ranges 在计算一维直方图时也要带 [] 号。

参数说明:

  • images:输入图像,用 [] 括号表示
  • channels: 直方图计算的通道,用 [] 括号表示
  • mask:掩模图像,一般置为 None
  • histSize:直方柱的数量,一般取 256
  • ranges:像素值的取值范围,一般为 [0,256]
  • 返回值 hist:返回每一像素值在图像中的像素总数,形状为 (histSize,1)

注意:

    1. 参数 images, channels, histSize, ranges 都要带 [] 号。
    1. mask 是与 images 大小相同的掩模图像,掩模为 0 的区域不作处理。不使用掩模时设为 None。
      3. channels 设置对彩色图像的指定通道计算直方图,灰度图像时设为 0。
      4. Numpy 中的函数 np.bincount 也可以实现同样的功能,但该函数返回值的形状为 (histSize,)

例程:1.57 图像的灰度直方图

    # 1.57 图像的灰度直方图img = cv2.imread("../images/imgLena.tif", flags=0)  # flags=0 读取为灰度图像histCV = cv2.calcHist([img], [0], None, [256], [0, 256])  # OpenCV 函数 cv2.calcHisthistNP, bins = np.histogram(img.flatten(), 256)print(histCV.shape, histNP.shape)  # histCV: (256, 1), histNP: (256,)plt.figure(figsize=(10,3))plt.subplot(131), plt.imshow(img, cmap='gray', vmin=0, vmax=255), plt.title("Original"), plt.axis('off')plt.subplot(132,xticks=[], yticks=[]), plt.axis([0,255,0,np.max(histCV)])plt.bar(range(256), histCV[:,0]), plt.title("Gray Hist(cv2.calcHist)")plt.subplot(133,xticks=[], yticks=[]), plt.axis([0,255,0,np.max(histCV)])plt.bar(bins[:-1], histNP), plt.title("Gray Hist(np.histogram)")plt.show()

在这里插入图片描述

(本节完)


版权声明:
youcans@xupt 原创作品,转载必须标注原文链接:(https://blog.csdn.net/youcans/article/details/121543352)
Copyright 2022 youcans, XUPT
Crated:2021-11-22

【第4章:灰度变换与直方图】

39. 图像灰度的线性变换
43. 图像的灰度变换(对数变换)
44. 图像的灰度变换(伽马变换)
45. 图像的灰度直方图

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

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

相关文章

【OpenCV 例程200篇】44. 图像的灰度变换(伽马变换)

『youcans 的 OpenCV 例程200篇 - 总目录』 【OpenCV 例程200篇】44. 图像的灰度变换(伽马变换) 线性灰度变换将原始图像灰度值的动态范围按线性关系扩展到指定范围或整个动态范围。 幂律变换也称伽马变换,可以提升暗部细节,对发…

【OpenCV 例程300篇】46. 直方图处理之直方图均衡化(cv2.equalizeHist)

『youcans 的 OpenCV 例程300篇 - 总目录』 【youcans 的 OpenCV 例程300篇】46. 直方图处理之直方图均衡化(cv2.equalizeHist) 图像直方图是反映图像像素分布的统计表,横坐标代表像素值的取值区间,纵坐标代表每一像素值在图像中的…

【OpenCV 例程300篇】47. 直方图处理之直方图匹配

『youcans 的 OpenCV 例程300篇 - 总目录』 【youcans 的 OpenCV 例程300篇】47. 直方图处理之直方图匹配 图像直方图是反映图像像素分布的统计表。 灰度直方图是图像灰度级的函数,用来描述每个灰度级在图像矩阵中的像素个数。 直方图均衡直接对图像全局进行均衡化…

lingo入门(数据部分)

lingo入门(数据部分) 在数据部分也可以指定一些标量变量(scalar variables)。当一个标量变量在数据部 分确定时,称之为参数。 data: interest_rate .085; enddata还可以指定几个参数data: interest_rate,inflation_rate .085 .03; enddata如…

我的Go+语言初体验——(1)超详细安装教程

我的Go语言初体验——(1)超详细安装教程 “我的Go语言初体验” | 征文活动进行中… Go 是什么?为数据而生,实现教学、工程与数据的 “三位一体”。 Go 语言的安装和环境配置有些复杂,官方教程也没有写的很详细。 本文…

JAVA增删查改的实现

java程序对SQLServer数据库的数据进行增删查的操作,结果在控制台输出 步骤详解: 设计并实现数据库在数据库中插入相应的数据链接SQLServer数据库实现对数据库的查增删等功能 数据库内容效果图 下面讲述JAVA代码 目录结构 1 . 数据库链接&#xff…

Mac下配置sublime实现LaTeX

在Mac上通过Sublime、Skim编辑LaTeX Sublime Text是一款非常优秀的编辑器,速度快,界面简洁,插件众多。并且能跨平台使用,在Mac和Windows上都能完美使用。虽然是一款付费软件,但作者很厚道地给了无限期的试用期限。这一…

我的Go+语言初体验——(2)IDE 详细安装教程

我的Go语言初体验——(2)IDE 详细安装教程 “我的Go语言初体验” | 征文活动进行中… Go 语言的安装和环境配置有些复杂,官方教程也没有写的很详细。 通过控制台编写和运行 Go 程序很不方便。本文从零开始,详细介绍 Go 集成开发环…

GoogleNet网络详解与keras实现

GoogleNet网络详解与keras实现 GoogleNet网络详解与keras实现GoogleNet系列网络的概览Pascal_VOC数据集第一层目录第二层目录第三层目录 InceptionV1模块介绍Inception的架构GoogleNet的图片Keras代码实现为了搭建Inception网络我们使用了以下策略整个代码的流程如下 实验结果实…

循环输出

使用foreach循环输出List中的数据 步骤详解: 1.数据库的设计和实现 2. Java代码的书写 3. jsp页面的显示 效果图展示 数据库数据 查询结果的显示 功能分析: 链接数据库查找数据库内容把这些内容放入List数组里面用session传递jsp页面获取session内…

我的Go+语言初体验——(4)零基础学习 Go+ 爬虫

我的Go语言初体验——(4)零基础学习 Go 爬虫 “我的Go语言初体验” | 征文活动进行中… Go 语言非常适合编写爬虫程序,具有并发机制完善、并发数量大、占用资源少、运行速度快、部署方便的优点。 本文结合官方文档与 Go 语言的资料&#xff…

latex的基本使用

LaTeX使用 LaTeX使用基本使用源文件的基本结构中文处理办法字体字号设置文章基本结构特殊字符处理图片的使用表格的使用Texstduio的导入表格功能会更快浮动体的使用数学公式初步矩阵的使用TexStudio里面的矩阵模板功能参考文献使用BibTex定义自己的命令 基本使用 sublime使用…

【OpenCV 例程300篇】48. 直方图处理之彩色直方图匹配

『youcans 的 OpenCV 例程300篇 - 总目录』 【youcans 的 OpenCV 例程300篇】48. 直方图处理之彩色直方图匹配 图像直方图是反映图像像素分布的统计表。 灰度直方图是图像灰度级的函数,用来描述每个灰度级在图像矩阵中的像素个数。 直方图匹配又称为直方图规定化&a…

Vue的安装和配置

Vue是目前最流行的前端框架之一,给大家讲一下如何安装和配置Vue环境。 网上也有许多关于安装和配置Vue的教程,但是他们的方法太过于麻烦了,而且对于初学者来说对网上的一些安装和配置Vue的方法不理解,看了之后还是没有一点思绪&a…

【OpenCV 例程300篇】49. 直方图处理之局部直方图处理(cv2.createCLAHE)

『youcans 的 OpenCV 例程300篇 - 总目录』 【youcans 的 OpenCV 例程300篇】49. 直方图处理之局部直方图处理(cv2.createCLAHE) 图像直方图是反映图像像素分布的统计表。 灰度直方图是图像灰度级的函数,用来描述每个灰度级在图像矩阵中的像素…

ResNet网络详解与keras实现

ResNet网络详解与keras实现 ResNet网络详解与keras实现Resnet网络的概览Pascal_VOC数据集第一层目录第二层目录第三层目录 梯度退化Residual LearningIdentity vs Projection ShortcutsBottleneck architectureResnet网络构建表ResNet论文结果为了搭建Resnet网络我们使用了以下…

简易计算器

用JavaScript实现简易计算器 先看效果图 计算加法弹框输出计算结果 程序解读&#xff1a; 1.两个输入框和一个下拉框 2. 弹框显示结果 3. 加减乘除的简单运算 代码演示 Html页面内容 <!DOCTYPE html> <html><head><meta charset"utf-8">…

【OpenCV 例程300篇】50. 直方图处理之直方图统计量图像增强

『youcans 的 OpenCV 例程300篇 - 总目录』 【youcans 的 OpenCV 例程300篇】50. 直方图处理之直方图统计量图像增强 图像直方图是反映图像像素分布的统计表。 灰度直方图是图像灰度级的函数&#xff0c;用来描述每个灰度级在图像矩阵中的像素个数。 直方图统计量图像增强&…

在大数据时代下金融风控的分类

Date&#xff1a;2018-05-24 Author&#xff1a;等等 依托城市数据湖海量数据资源&#xff0c;尤其是在信贷领域对企业或者个人的个人信贷画像描述评判准则已经是第三方房贷企业或者银行对借贷人的评分标准。风控建模以数据价值挖掘为导向&#xff0c;吸纳大量数据、人工智能科…

多功能标准型计算器

实现一个标准型计算器及其各项功能的实现 效果图欣赏 是不是看起来很漂亮的呢&#xff1f;&#xff1f;&#xff1f; 功能详解&#xff1a; 屏幕显示输入的数字和符号实现加减乘除运算回退和清零功能小数的运算结果的输出 相信小伙伴们都已经迫不及待的想要知道源码了。 代…