详解Python+OpenCV绘制灰度直方图


Posted in Python onMarch 22, 2022

1.直方图的概念

图像直方图是反映一个图像像素分布的统计表,其实横坐标代表了图像像素的种类,可以是灰度的,也可以是彩色的。纵坐标代表了每一种颜色值在图像中的像素总数或者占所有像素个数的百分比。图像是由像素构成,因为反映像素分布的直方图往往可以作为图像一个很重要的特征。

图像灰度直方图:

一幅图像由不同灰度值的像素组成,图像中灰度的分布情况是该图像的一个重要特征。图像的灰度直方图就描述了图像中灰度分布情况,能够很直观的展示出图像中各个灰度级所占的多少。图像的灰度直方图是灰度级的函数,描述的是图像中具有该灰度级的像素的个数:其中,横坐标是灰度级,纵坐标是该灰度级出现的频率

归一化直方图:

通常会将纵坐标归一化到[0,1]区间内,也就是将灰度级出现的频率(像素个数)除以图像中像素的总数。灰度直方图的计算公式如下:

详解Python+OpenCV绘制灰度直方图

其中,rk是像素的灰度级,nk是具有灰度rk的像素的个数,MN是图像中总的像素个数。

代码

import cv2 as cv
import numpy as np
 
from matplotlib import pyplot as plt
#%matplotlib inline
 
def plot_demo(image):
    plt.hist(image.ravel(), 256, [0, 256]) #image.ravel()#ravel函数功能是将多维数组降为一维数组,统计各个bin的频次,256:bin的个数,[0, 256]:范围
    plt.show("直方图") #和OpenCV中的想要的直方图不同
"""
画灰度图直方图:
绘图都可以调用matplotlib.pyplot库来进行,其中的hist函数可以直接绘制直方图。
plt.hist(arr, bins=50, normed=1, facecolor='green', alpha=0.75)
hist的参数非常多,但常用的就这五个,只有第一个是必须的,后面四个可选
arr: 需要计算直方图的一维数组
bins: 直方图的柱数,可选项,默认为10
normed: 是否将得到的直方图向量归一化。默认为0
range参数表示箱子的下限和上限。即横坐标显示的范围,范围之外的将被舍弃
"""
 
def image_hist(image):
    color = ('blue', 'green', 'red')  #图像三通道
    for i, color in enumerate(color):
        hist = cv.calcHist([image], [i], None, [256], [0, 256]) #绘制各个通道的直方图
        plt.plot(hist, color=color) #定义线的颜色
        plt.xlim([0, 256]) #x轴的范围
    plt.show()
"""
calcHist(images, channels, mask, histSize, ranges[, hist[, accumulate]]) 
images参数表示输入图像,传入时应该用中括号[ ]括起来
channels参数表示传入图像的通道,如果是灰度图像,那就不用说了,只有一个通道,值为0,
如果是彩色图像(有3个通道),那么值为0,1,2,中选择一个,对应着BGR各个通道。这个值也得用[ ]传入。
mask参数表示掩膜图像。如果统计整幅图,那么为None。
主要是如果要统计部分图的直方图,就得构造相应的掩膜来计算。
histSize参数表示灰度级的个数,需要中括号,比如[256]
ranges参数表示像素值的范围,通常[0,256]。此外,假如channels为[0,1],ranges为[0,256,0,180],
则代表0通道范围是0-256,1通道范围0-180。
hist参数表示计算出来的直方图。
"""
 
 
src = cv.imread("F:/images/lena.png")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
plot_demo(src)
image_hist(src)
cv.waitKey(0)
 
cv.destroyAllWindows()

原图

详解Python+OpenCV绘制灰度直方图

二维直返图

详解Python+OpenCV绘制灰度直方图

RGB直方图

详解Python+OpenCV绘制灰度直方图

到此这篇关于Python+OpenCV绘制灰度直方图详解的文章就介绍到这了,更多相关Python OpenCV灰度直方图内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Android模拟器无法启动,报错:Cannot set up guest memory ‘android_arm’ Invalid argument的解决方法
Jul 01 Python
Python+Wordpress制作小说站
Apr 14 Python
使用Django Form解决表单数据无法动态刷新的两种方法
Jul 14 Python
聊聊python里如何用Borg pattern实现的单例模式
Jun 06 Python
使用python爬取微博数据打造一颗“心”
Jun 28 Python
详解python pandas 分组统计的方法
Jul 30 Python
Python使用Beautiful Soup爬取豆瓣音乐排行榜过程解析
Aug 15 Python
python实现提取COCO,VOC数据集中特定的类
Mar 10 Python
利用python批量爬取百度任意类别的图片的实现方法
Oct 07 Python
基于Python爬取股票数据过程详解
Oct 21 Python
Python使用sql语句对mysql数据库多条件模糊查询的思路详解
Apr 12 Python
Pandas实现DataFrame的简单运算、统计与排序
Mar 31 Python
PYTHON使用Matplotlib去实现各种条形图的绘制
Python+OpenCV实现在图像上绘制矩形
Matplotlib绘制条形图的方法你知道吗
Python的代理类实现,控制访问和修改属性的权限你都了解吗
Mar 21 #Python
python的netCDF4批量处理NC格式文件的操作方法
Python&Matlab实现灰狼优化算法的示例代码
Python学习之时间包使用教程详解
Mar 21 #Python
You might like
php下检测字符串是否是utf8编码的代码
2008/06/28 PHP
PHP源码之 ext/mysql扩展部分
2009/07/17 PHP
对PHP新手的一些建议(PHP学习经验总结)
2014/08/20 PHP
PHP中使用循环实现的金字塔图形
2014/11/08 PHP
php正则匹配文章中的远程图片地址并下载图片至本地
2015/09/29 PHP
使用WAMP搭建PHP本地开发环境
2017/05/10 PHP
jQuery 处理网页内容的实现代码
2010/02/15 Javascript
网页中CDATA标记的说明
2010/09/12 Javascript
利用js 进行输入框自动匹配字符的小例子
2013/06/29 Javascript
JS获取计算机mac地址以及IP的实现方法
2014/01/08 Javascript
跟我学习javascript的call(),apply(),bind()与回调
2015/11/16 Javascript
js轮播图透明度切换(带上下页和底部圆点切换)
2017/04/27 Javascript
详解Angular2 关于*ngFor 嵌套循环
2017/05/22 Javascript
通过命令行创建vue项目的方法
2017/07/20 Javascript
详解layui中的树形关于取值传值问题
2018/01/16 Javascript
Vue实现页面添加水印功能
2019/11/09 Javascript
Vue this.$router.push(参数)实现页面跳转操作
2020/09/09 Javascript
微信小程序抽奖组件的使用步骤
2021/01/11 Javascript
用Python编写脚本使IE实现代理上网的教程
2015/04/23 Python
Python3学习笔记之列表方法示例详解
2017/10/06 Python
PyQt实现界面翻转切换效果
2018/04/20 Python
python自动重试第三方包retrying模块的方法
2018/04/24 Python
Django+zTree构建组织架构树的方法
2019/08/21 Python
Pycharm小白级简单使用教程
2020/01/08 Python
ansible动态Inventory主机清单配置遇到的坑
2020/01/19 Python
解决Python 异常TypeError: cannot concatenate 'str' and 'int' objects
2020/04/08 Python
多个版本的python共存时使用pip的正确做法
2020/10/26 Python
如何使用css3实现一个类在线直播的队列动画的示例代码
2020/06/17 HTML / CSS
远程研修随笔感言
2014/02/10 职场文书
工程专业求职自荐书范文
2014/02/18 职场文书
2014年机关植树节活动方案
2014/02/27 职场文书
销售经理岗位职责
2014/03/16 职场文书
深入开展党的群众路线教育实践活动心得体会
2014/11/05 职场文书
应届生求职自荐信范文
2015/03/04 职场文书
css常用字体属性与背景属性介绍
2022/02/28 HTML / CSS
JavaScript正则表达式实现注册信息校验功能
2022/05/30 Java/Android