当前位置:   article > 正文

OpenCV-图像直方图_opencv图像直方图

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() 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在这里插入图片描述

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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在这里插入图片描述

hist()

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

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

matplotlib.pyplot.hist(X,BINS)
  • 1

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

calcHist()

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

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')
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述

绘制彩色的直方图

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')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在这里插入图片描述

彩色直方图封装

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],</
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/141011
推荐阅读
相关标签
  

闽ICP备14008679号