opencv python 直方图_OpenCV Python 输出图像的直方图

By 凌顺

2019年9月17日

实现目的

通过 np.histogram 计算图像的直方图,可以通过直方图的方法查看图片的一些信息,例如是否过曝或者欠曝。

实现代码

1,加载需要的库

import cv2

import numpy as np

import matplotlib.pyplot as plt

2,显示可爱的狗狗

# 加载图片

img = cv2.imread('dog.png')

# 把图片的BGR色彩空间转换成RGB色彩空间

img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

# 显示图片

plt.imshow(img)

3,使用 np.histogram 计算直方图

# 使用 np.histogram 函数计算直方图

hist, bins = np.histogram(img, 256, [0, 255])

4 显示直方图

# 使用 plt.fill 函数 填充多边形

plt.fill(hist)

# 标记x轴的名称

plt.xlabel('pixel value')

# 显示直方图

plt.show()

程序说明

本示例首先使用了NumPy的histogram函数,计算图片的直方图数组

大概语法与参数如下:

histogram(a,bins=10,range=None,weights=None,density=False)

a 输入的数组;

(可选)bins 指定统计的区间个数;

(可选)range 是一个长度为2的元组,表示统计范围的最小值和最大值,默认值None,表示范围由数据的范围决定

(可选)weights 为数组的每个元素指定了权值,histogram()会对区间中数组所对应的权值进行求和

(可选)density 为True时,返回每个区间的概率密度;为False,返回每个区间中元素的个数

该函数返回两个数值,分别是:

hist : 直方图数组

bin_edges:返回bin边(长度(hist)+1)。

通过计算得到的直方图数组,在使用 pit.fill() 函数进行填充绘制,最后显示出来。

OpenCV有自己的计算直方图的通用函数 cv2.calcHist 。但是,在本示例中,我们将使用NumPy的 np.histogram,它使代码更加简洁。例程的参数是输入图像矩阵、bin的数量和bin的范围。它返回一个数组,其中包含bin的直方图值和边缘值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值