第13章 图像轮廓 --直方图处理

1、cv2.calcHist 函数 统计直方图信息

hist = cv2.calcHist(image, channels, mask, histSize, range, accumulate)

返回值:

  • hist:返回的统计直方图,是一个一维数组,数组内的元素是各个灰度级的像素个数

参数:

  • images:原始图像,该图像需要使用“[]”括起来。
  • channels:指定通道编号。通道编号需要用 “[]” 括起来,
    • 如果输入图像是单通道灰度 图像,该参数的值就是[0]
    • 对于彩色图像,它的值可以是[0]、[11、[2],分别对应通道 B、G、R
  • mask:掩模图像。
    • 当统计整幅图像的直方图时,将这个值设为 None
    • 当统计图像某一部分的直方图时,需要用到掩模图像
  • histSize:BINS 的值,该值需要用 “[]” 括起来。例如,BINS 的值是 256,需要使用“[256]’作为此参数值。
  • ranges: 即像素值范围。例如,8位灰度图像的像素值范围是 [0,255]。
  • accumulate:累计(累积、叠加)标识,默认值为 False。
    • 如果被设置为True,则直方图在开始计算时不会被清零,计算的是多个直方图的累积结果,用于对一组图像计算直方图。该参数允许从多个对象中计算单个直方图,或者实时更新直方图。

举例:

import cv2

original_image = cv2.imread("Lena.bmp", 0)

hist = cv2.calcHist([original_image], [0], None, [256], [0, 255])
print(type(hist))
print(hist.shape)
print(hist)

# <class 'numpy.ndarray'>
# (256, 1)
# [[0.000e+00]
#  [0.000e+00]
#  [0.000e+00]
#  [0.000e+00]
#  [0.000e+00]
#  ..........
#  [0.000e+00]
#  [0.000e+00]
#  [0.000e+00]
#  [0.000e+00]
#  [0.000e+00]]

2、结合 matplotlib.pyplot.plot 绘制直方图

import cv2
import matplotlib.pyplot as plt

o = cv2.imread("Lena.bmp", -1)

hist_b = cv2.calcHist([o], [0], None, [256], [0, 255])
hist_g = cv2.calcHist([o], [1], None, [256], [0, 255])
hist_r = cv2.calcHist([o], [2], None, [256], [0, 255])
plt.plot(hist_b, color='b')
plt.plot(hist_g, color='g')
plt.plot(hist_r, color='r')

plt.show()

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Enzo 想砸电脑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值