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

Python版本是Python3.7.3,OpenCV版本OpenCV3.4.1,开发环境为PyCharm

13.2 使用Numpy绘制直方图

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

matplotlib.pyplot.hist(X, BINS)

其中两个参数的含义如下:
● X:数据源,必须是一维的。图像通常是二维的,需要使用ravel()函数将图像处理为一维数据源以后,再作为参数使用。
● BINS:BINS的具体值,表示灰度级的分组情况。
函数ravel()的作用是将二维数组降维成一维数组。例如,有图像a,其值为:
在这里插入图片描述

使用函数ravel()对a进行处理:

b = a.ravel()

可以得到b为:
在这里插入图片描述

eg1:使用hist()函数绘制一幅图像的直方图。
根据题目的要求,编写代码如下:

import cv2
import matplotlib.pyplot as plt
o=cv2.imread("image\\boat.jpg")
cv2.imshow("original",o)
plt.hist(o.ravel(),256)
plt.show(  )   # 显示图像
cv2.waitKey()
cv2.destroyAllWindows()

运行上述程序后,得到如下图所示的结果。其中左图是原始图像,右图是其对应的直方图。
在这里插入图片描述在这里插入图片描述
eg2:使用函数hist()将一幅图像的灰度级划分为16组后,绘制该图像的直方图。
将灰度级划分为16组,即将灰度级划分为16个子集,对应的BINS值为16。按照题目的要求,编写代码如下:

import cv2
import matplotlib.pyplot as plt
o=cv2.imread("image\\boat.bmp")
plt.hist(o.ravel(),16)
plt.show(  )  # 显示图像

运行上述程序,结果如下图所示,从图中可以看到,整个灰度级被划分为16个子集。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值