OpenCV绘制直方图cv2.calcHist()

OpenCV绘制直方图cv2.calcHist()

直方图:X轴是像素值,Y轴是图像中该像素值的数量。通过查看图像的直方图,可以直观地了解图像的对比度、亮度、强度分布等。
BINS:一般直方图显示的像素值是0—255,一共256个。也可以将直方图分成16个子部分,0—15之间的像素数量、16—31之间的像素数量…240—255之间的像素数量,只需要16个值就可以表示直方图,每个子部分都称为’BIN’。
OpenCV中计算直方图的函数:
cv2.calcHist(images, channels, mask, histSize, ranges[,hist[,accumulate]])
images:是uint8或者float32类型的源图像,应该放在方括号中,即[img]。
channels:也是以方括号给出,是计算直方图的通道的索引。输入灰度图像,其值是[0]。对于彩色图像,可以传递[0]、[1]、[2]分别计算BGR通道的直方图。
mask:图像掩码,为了找到完整图像的直方图,将其指定为’无’。如果查找图像特定区域的直方图,需要创建一个掩码图像。
histSize:表示BIN计数,需要放在方括号中,对于全尺寸是[256]
ranges:需要测量的强度值的范围,通常是[0,256],即所有强度值。

import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread('C:\\Users\\Administrator\\Desktop\\xusong.jpg')
img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)  #转化为灰度图
#hist是256*1的数组,每个值对应图像中具有该像素值的像素数量
hist = cv2.calcHist([img_gray],[0],None,[256],[0,256])
#绘制直方图,使用matplotlib
'''
绘制灰度图img_gray的直方图
plt.hist(img_gray.ravel(),256,[0,256])
plt.show()
'''
#绘制彩色图像的BGR的直方图,将BGR绘制在同一个图中
color = ['b','g','r']
for i,col in enumerate(color):
    histr = cv2.calcHist([img],[i],None,[256],[0,256])
    plt.plot(histr,color = col)
    plt.xlim([0,256])
plt.show()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值