OpenCV-图像直方图

直方图的定义

从统计的角度讲,直方图是图像内灰度值的统计特性与图像灰度值之间的函数,直方图统计图像内各个灰度级出现的次数。从直方图的图像上观察,横坐标是图像中各像素点的灰度级,纵坐标是具有该灰度级(像素值)的像素个数。
在这里插入图片描述

直方图是数值数据分布的精确图形表示。 这是一个连续变量(定量变量)的概率分布的估计,并且被卡尔·皮尔逊(Karl Pearson)首先引入。它是一种条形图。
构建直方图:
①将值的范围分段
②计算每个间隔中有多少值
作用
(1)显示图像质量波动的状态
(2)较直观地传递有关过程图像质量状况的信息
(3)掌握过程的状况,从而确定在什么地方集中力量进行图像质量改进工作

直方图绘制

matplotlib.pyplot.hist(X, BINS,facecolor=‘yellowgreen’)
X:一维数组
BINS:数组的边界(如256)
import matplotlib.pyplot as plt

import cv2
import matplotlib.pyplot as plt
img1=cv2.imread("hj.jpg",0)
cv2.imshow("img1",img1)
plt.hist(img1.ravel(),256,facecolor='yellowgreen')
cv2.waitKey()
cv2.destroyAllWindows() 

在这里插入图片描述

import cv2
import matplotlib.pyplot as plt
img1=cv2.imread("bd.jpg")
cv2.imshow("img1",img1)
plt.hist(img1.ravel(),256)
cv2.waitKey()
cv2.destroyAllWindows()

在这里插入图片描述

hist()

matplotlib.pyplot.hist(X,BINS)
import matplotlib.pyplot as plt

matplotlib.pyplot是一个有命令风格的函数集合,它看起
来和MATLAB很相似

matplotlib.pyplot.hist(X,BINS)

X:数据源,必须是一维(降维处理:b=a.ravel())的。图像通常是二维的,需要使用ravel()函数将图像处理为一维数据源以后,再作为参数使用。
BINS:表示灰度级的分组情况。

calcHist()

cv2.calcHist
(images,channels,mask,histSize,ranges,accumulate)

channels:指定通道编号。通道编号需要用“[]”括起来。
mask:掩模图像。当统计整幅图像的直方图时,将这个值设为None
histSize: BINS的值,该值需要用“[]”括起来。
ranges:即像素值范围。例如,8位灰度图像的像素值范围是[0,255]
accumulate:累计(累积、叠加)标识,默认值为False

import cv2
import numpy as np
img=cv2.imread("bd.jpg")
hist = cv2.calcHist([img],[0],None,[256],[0,255])
plt.plot(hist,color='b')

在这里插入图片描述

绘制彩色的直方图

import cv2
import numpy as np
img=cv2.imread("bd.jpg")
histb = cv2.calcHist([img],[0],None,[256],[0,255])
histg = cv2.calcHist([img],[1],None,[256],[0,255])
histr = cv2.calcHist([img],[2],None,[256],[0,255])
plt.plot(histb,color='b')
plt.plot(histg,color='g')
plt.plot(histr,color='r')

在这里插入图片描述

彩色直方图封装

import cv2
import numpy as np
from matplotlib import pyplot as plt
def image_hist(image):
    color = ('blue', 'green', 'red')
    for i, color in enumerate(color):
        hist = cv2.calcHist([image],</
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值