Opencv中的cv2.calcHist()函数的作用及返回值说明

目录
  • cv2.calcHist()函数
    • cv2.calcHist()函数的作用
  • cv2.calcHist()函数的返回值

在讨论其返回值前,我们先来介绍以下calcHist()函数的用法:

cv2.calcHist()函数

cv2.calcHist()函数的作用

通过直方图可以很好的对整幅图像的灰度分布有一个整体的了解,直方图的x轴是灰度值(0~255),y轴是图片中具有同一个灰度值的点的数目。

而calcHist()函数则可以帮助我们统计一幅图像的直方图

cv2.calcHist(images,channels,mask,histSize,ranges)
  • images: 原图像图像格式为 uint8 或 float32。当传入函数时应 用中括号 [] 括来例如[img]
  • channels: 同样用中括号括来它会告函数我们统幅图 像的直方图。如果入图像是灰度图它的值就是 [0]如果是彩色 图像 的传入的参数可以是 [0][1][2] 它们分别对应着 BGR。
  • mask: 掩模图像。统整幅图像的直方图就把它为 None。但是如果你想统图像某一分的直方图的你就制作一个掩模图像并使用它。
  • histSize:BIN 的数目。也应用中括号括来
  • BINS: 上面的直方图显示了每个像素值的像素数,即从0到255。即您需要256个值才能显示上述直方图。但是请考虑一下,如果您不需要单独查找所有像素值的像素数,而是在像素值间隔内查找像素数,该怎么办?例如,您需要找到介于 0 到 15 之间的像素数,然后是 16 到 31、...、240 到 255。您只需要 16 个值来表示直方图。
  • 因此,只需将整个直方图拆分为 16 个子部分,每个子部分的值就是其中所有像素计数的总和。这每个子部分都称为"BIN"。在第一种情况下,条柱数为256(每个像素一个),而在第二种情况下,它只有16。BINS 在 OpenCV 文档中由术语histSize表示。
  • ranges: 像素值范围常为 [0 256]

示例:

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

img = cv2.imread('cat.jpg', 0)  # 0表示灰度图
hist = cv2.calcHist([img], [0], None, [256], [0, 256])
# print(hist)
# print(hist[175])
# print(type(hist))
plt.hist(img.ravel(),256);
#print(img.ravel())
plt.show()

输出结果:

示例2:多通道图的“直方图”

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

img = cv2.imread('cat.jpg')
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])
    print(i,col)

输出结果:

到这里完整的直方图就这样子绘制出来了,但是大家也许会对calcHist的返回值有疑问,到底返回了什么才能画出来这样的图像呢?下面我们则来讨论该函数的返回值

cv2.calcHist()函数的返回值

对于hist = cv2.calcHist([img],[0],None,[256],[0,256])中,hist是一个256*1的矩阵,每一个值代表了每个灰度值对应的像素点数目

print(type(hist))
<class 'numpy.ndarray'>

输出的结果表示这是一个多维数组

print(hist)

[[1.000e+00]
 [0.000e+00]
 [2.000e+00]
 [0.000e+00]
       .......
 [2.010e+02]
 [2.180e+02]
 [2.160e+02]
 [2.660e+02]
 [3.350e+02]
 [3.110e+02]
 [4.670e+02]]

经计算,共有256个值,即可以输出hist[0]到hist[255]。

整个hist[i]则表示灰度值

print(hist[175],hist[255])

[3181.] [467.]

通过直方图可看出输出的结果就是每一个灰度值对应的像素数目

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • python Opencv计算图像相似度过程解析

    这篇文章主要介绍了python Opencv计算图像相似度过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.相关概念 一般我们人区分谁是谁,给物品分类,都是通过各种特征去辨别的,比如黑长直.大白腿.樱桃唇.瓜子脸.王麻子脸上有麻子,隔壁老王和儿子很像,但是儿子下巴涨了一颗痣和他妈一模一样,让你确定这是你儿子. 还有其他物品.什么桌子带腿.镜子反光能在里面倒影出东西,各种各样的特征,我们通过学习.归纳,自然而然能够很快识别分类出新物品.

  • Python OpenCV的基本使用及相关函数

    目录 1.图像的读取 2.图像保存 3.图像展示 4.获取图像属性 5.图像缩放(宽,高) 6.在原图像中获取某一区域 7.彩色图像通道分解 8.图像加法 9.图像反转 10.图像金字塔 11.直方图 12.图像类型转换 13.图像阈值转换 .二值化 14.图像平滑处理 15.图像形态学操作 16.图像梯度,边缘检测 17.图像轮廓标注 18.读取视频文件 Python-OpenCV环境的配置看上一篇OpenCV环境的配置本篇主要介绍一下OpenCV的基本使用和相关函数的介绍.以下所有操作都基于

  • python中opencv 直方图处理

    目录 直方图处理 直方图的含义 绘制直方图 使用Numpy绘制直方图 使用OpenCV绘制直方图 使用掩模绘制直方图 直方图均衡化 直方图均衡化原理 直方图均衡化处理 pyplot 模块介绍 subplot 函数 imshow函数 直方图处理 直方图从图像内部灰度级的角度对图像进行表述从直方图的角度对图像进行处理,可以达到增强图像显示效果的目的. 直方图的含义 直方图是图像内灰度值的统计特性与图像灰度值之间的函数,直方图统计图像内各个灰度级出现的次数.从直方图的图形上观察,横坐标是图像中各像素点

  • Opencv中的cv2.calcHist()函数的作用及返回值说明

    目录 cv2.calcHist()函数 cv2.calcHist()函数的作用 cv2.calcHist()函数的返回值 在讨论其返回值前,我们先来介绍以下calcHist()函数的用法: cv2.calcHist()函数 cv2.calcHist()函数的作用 通过直方图可以很好的对整幅图像的灰度分布有一个整体的了解,直方图的x轴是灰度值(0~255),y轴是图片中具有同一个灰度值的点的数目. 而calcHist()函数则可以帮助我们统计一幅图像的直方图 cv2.calcHist(images

  • Python-OpenCV中的cv2.inpaint()函数的使用

    目录 概念 库函数 实现 代码 概念 修复是图像插值.数字修复算法在图像插值,照片恢复,缩放和超分辨率等方面具有广泛的应用. 大多数人会在家里放一些旧的退化照片,上面有一些黑点,一些笔画等.你有没有想过恢复它?我们不能简单地在绘画工具中擦除它们,因为它将简单地用白色结构替换黑色结构,这是没有用的.在这些情况下,使用称为图像修复的技术.基本思路很简单:用邻近的像素替换那些坏标记,使其看起来像是邻居(取自维基百科),考虑下面显示的图像: 库函数 dst = cv2.inpaint(src,mask,

  • 详解opencv中画圆circle函数和椭圆ellipse函数

    1.      void ellipse(InputOutputArray img, Point center, Size axes, double angle, double startAngle, double endAngle, const Scalar& color, int thickness = 1,   int lineType = LINE_8, int shift = 0); ellipse函数将椭圆画到图像 lmg 上, 椭圆中心为点center,并且大小位于矩形 axes

  • Swift中的高阶函数功能作用示例详解

    目录 高阶函数的作用 1. 简化代码 2. 提高可读性 3. 支持函数式编程 4. 提高代码的可重用性 常见的高阶函数 1. map() 2. filter() 3. reduce() 4. sorted() 5. forEach() 6. compactMap() 7. flatMap() 8. zip() 9. first() 10. contains() 高阶函数的作用 Swift中的高阶函数是指那些参数或返回值是函数的函数.它们的存在使得我们可以用非常简洁和优雅的代码来解决许多问题. 1

  • JS中实现函数return多个返回值的实例

    近期开始着手web前端的工作,主要用到JS.html5+css.以及JS框架(jQuery.dojo等等),在学习和写代码的过程中有一些小经验跟大家一起交流与学习. 今天主要针对"JS实现函数return多个返回值"的方法. 1.函数的基本方法如下: functionA(fp1,fp2,fp3){ ....... return {a1:a,b1:b,c1:c}; //将得到的值a,b,c,封装在一个字段分别有a1,b1,c1的对象中 } 2.调用函数: 调用functionA(fp1,

  • 解决Mybatis中mapper.xml文件update,delete及insert返回值问题

    最近写了几个非常简单的接口(CRUD),在单元测试的时候却出了问题,报错如下: Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'messageListener': Unsatisfied dependency expressed through field 'reviewCheckInfoService'; nested exce

  • python-opencv中的cv2.inRange函数用法说明

    本次目标是将一副图像从rgb颜色空间转换到hsv颜色空间,颜色去除白色背景部分 具体就调用了cv2的两个函数,一个是rgb转hsv的函数 具体用法 hsv = cv2.cvtColor(rgb_image, cv2.COLOR_BGR2HSV) 然后利用cv2.inRange函数设阈值,去除背景部分 mask = cv2.inRange(hsv, lower_red, upper_red) #lower20===>0,upper200==>0, 函数很简单,参数有三个 第一个参数:hsv指的是

  • C语言main函数的参数及其返回值详细解析

    返回值的作用 main函数的返回值用于说明程序的退出状态.如果返回0,则代表程序正常退出:返回其它数字的含义则由系统决定.通常,返回非零代表程序异常退出.下面我们在winxp环境下做一个小实验.首先编译下面的程序:int main( void ){    return 0;}然后打开附件里的"命令提示符",在命令行里运行刚才编译好的可执行文件,然后输入"echo%ERRORLEVEL%",回车,就可以看到程序的返回值为0.假设刚才编译好的文件是a.exe,如果输入&

  • Python学习笔记之函数的参数和返回值的使用

    01.函数参数和返回值的作用 函数根据 有没有参数 以及 有没有返回值,可以相互结合,共有四种: 无参数 无返回值 无参数 有返回值 有参数 无返回值 有参数 有返回值 定义函数时候,是否接收参数,或者时候返回结果,是根据实际功能需求决定的. 如果函数内部处理的数据不确定,就可以将外界的数据以参数形式传递到函数内部. 如果希望一个函数执行完成后,向外界汇报执行结果,就可以增加函数的返回值. 02.函数的返回值-进阶 在程序开发中,有时候,会希望一个函数执行结束后,告诉调用者一个结果,以便调用者针

  • linux shell 自定义函数方法(定义、返回值、变量作用域)

    一.定义shell函数(define function) 语法: [ function ] funname [()] { action; [return int;] } 说明: 1.可以带function fun() 定义,也可以直接fun() 定义,不带任何参数. 2.参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值. return后跟数值n(0-255 实例(testfun1.sh): #!/bin/sh fSum 3 2; function fSum

随机推荐