13.3 直方图的绘制:使用opencv统计直方图的信息

                                                                                                           点击此处返回总目录

 

上一节讲了绘制直方图的一种方法:

直接使用matplotlib.pyplot的库函数hist来绘制直方图。

 

这一节讲绘制直方图的另一种方法:

首先使用opencv的库函数calcHist()计算直方图的信息。

然后调用matplotlib.pyplot的库函数绘制直方图。

 

 

 

 

先来回顾一下直方图是什么?

13.3 直方图的绘制:使用opencv统计直方图的信息

 

 

横坐标与纵坐标是一一对应的。横坐标都是从0到255。我们只要知道纵坐标的序列就能绘图。

 

 

一、opencv提供的计算直方图信息的函数

opencv提供了calcHist()函数用来计算纵坐标的数组。

13.3 直方图的绘制:使用opencv统计直方图的信息

 

 

13.3 直方图的绘制:使用opencv统计直方图的信息

 

 

 

 

(1) hist                       //直方图

13.3 直方图的绘制:使用opencv统计直方图的信息

 

返回的是一个256行一列的二维数组。

 

 

(2) images

13.3 直方图的绘制:使用opencv统计直方图的信息

 

 

(3) channels

13.3 直方图的绘制:使用opencv统计直方图的信息

 

如果是灰度图像,直接写[0]就可以了。如果是彩色图像,可以指定计算哪个通道。

 

(4) mask

13.3 直方图的绘制:使用opencv统计直方图的信息

 

如果图像比较大,只想计算某一部分的直方图。那就需要用掩码。后面章节会单独介绍。

 

 

(5) histSize

 

13.3 直方图的绘制:使用opencv统计直方图的信息

 

 

(6) ranges

13.3 直方图的绘制:使用opencv统计直方图的信息

 

 

(7) accumulate

13.3 直方图的绘制:使用opencv统计直方图的信息

 

如果是好几副图像,可能要计算一组图像的直方图。

这是一个可选参数,可以有可以没有。

 

 

 

 

举例:

13.3 直方图的绘制:使用opencv统计直方图的信息

 

因为是灰度图像,所以写了[0]

 

 

 

二、calcHist()函数结合matplotlib.pyplot的库函数来绘制直方图


可以结合绘制折线的函数plot来绘制直方图。

 

13.3 直方图的绘制:使用opencv统计直方图的信息

 

 

plot函数的使用见笔记:https://blog.****.net/pengchengliu/article/details/87858644

 

 

下面就可以使用这两个函数绘制直方图了。

 

例1:灰度图像绘制直方图

 

13.3 直方图的绘制:使用opencv统计直方图的信息

 

 

结果:

 

13.3 直方图的绘制:使用opencv统计直方图的信息

 

 

例2:彩色图像绘制三个通道的直方图

 

13.3 直方图的绘制:使用opencv统计直方图的信息

 

结果:

13.3 直方图的绘制:使用opencv统计直方图的信息