• Opencv | 直方图


    一. 直方图

    方法1

    	cv.calcHist(images, channels, mask, histSize, ranges=None, accumulate=False)
    	参数:
    		images: 输入图像,可以是单个图像或图像的列表
    		channels: 
    			计算直方图的通道
    				对于灰度图像,该值为0
    				对于RGB彩色图像,可以传递一个包含三个元素的数组 [0, 1, 2],表示分别计算每个通道的直方图
    		mask: 
    			掩码图像,用于指定图像的哪个区域需要计算直方图
    			如果不需要掩码,可以传递 None
    		histSize:
    			输出直方图的大小
    				对于一维直方图,这是一个整数
    				对于二维直方图,这是一个包含两个整数的元组
    				对于三维直方图,这是一个包含三个整数的元组
    		ranges: 
    			可选参数,用于指定直方图的范围
    			默认情况下,将使用图像的最小值和最大值
    		accumulate: 
    			可选参数,布尔值
    				True:计算过程中将直方图累积到内部缓冲区中
    	返回值:返回一个或多个计算出的直方图(取决于输入图像的数量)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    方法2

    	np.histogram(a, bins=10, range=None, normed=None, weights=None, density=None)
    	参数:
    		a: 输入数组
    		bins: 可选参数,表示直方图的条形数(即分箱数量),默认为10
    		range: 
    			可选参数,表示直方图的最小值和最大值范围,格式为 (min, max)
    			如果未指定,则使用 a 的最小值和最大值
    		normed: 可选参数,布尔值。
    			 	如果为 True,则返回的直方图高度将归一化,使得直方图的面积为1
    		weights: 
    			可选参数,表示每个元素的重要性(权重)
    			默认情况下,所有元素的权重都是1
    		density: 
    			可选参数,布尔值
    			如果为 True,则返回的直方图高度将乘以 bins 的数量,使得直方图下的总面积等于1,这通常与 normed 一起使用
    	返回值: 返回两个数组,即直方图的高度和区间边界的数组
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    方法3

    	np.bincount(arr, weights=None, minlength=0)
    	参数:
    		arr:输入的一维整数数组
    		weights:
    			可选参数
    			它是一个形状与arr相同的数组,用于给arr中的每个元素指定权重
    				若提供了weights,则bincount将计算加权值的出现次数
    		minlength: 
    			可选参数
    			指定了输出数组的最小长度
    				若值 > 0的值,则当max(输入数组) < minlength时,输出数组将用0填充到指定的最小长度
    	返回值:
    		一个一维数组
    			长度为max(arr)+1 / minlength(取决于哪个更大)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    二. 掩码区域的直方图绘制

    	1. 创建与原图一致的shape
    	2. 创建mask区域
    	3. 构建mask区域图像,cv.bitwise_and( )
    	4. 计算直方图
    
    • 1
    • 2
    • 3
    • 4

    感谢阅读🌼
    如果喜欢这篇文章,记得点赞👍和转发🔄哦!
    有任何想法或问题,欢迎留言交流💬,我们下次见!
    本文相关代码存放位置
        【Opencv 图像变换代码实现

    祝愉快🌟!


  • 相关阅读:
    JavaSE - 调用和重写Object类中的toString方法、equals方法以及理解Arrays类中的toString方法
    通过vNode实现给列表字段打标签
    java毕业设计InHome阅读平台mybatis+源码+调试部署+系统+数据库+lw
    振弦式渗压计与振弦采集仪组成大坝水库监测
    python爬虫之xpath的使用
    基于云边协同架构的五大应用场景革新
    HTTP/2和HTTP/3特性介绍
    《Python 快速入门》一千个程序员有一千套编码规范
    改变this指向
    GPT learning
  • 原文地址:https://blog.csdn.net/weixin_49613115/article/details/138168677