25 OpenCV 二维直方图

25 二维直方图

opencv知识点:

  • 计算直方图数据 - calcHist
  • 四舍五入浮点数 - cvRound
  • 寻找最小/最大值 - minMaxLoc

本课所解决的问题:

  • 如何绘制HSV图像的二维直方图?

1.二维直方图

上节课中,我们学习了一维直方图的绘制,那我们该如何绘制二维直方图呢?

关于二维直方图的绘制,我们通常选择HSV模式下的图像

我们回顾HSV的知识,可以发现

  • H(色调)范围是[0,180]

  • S(饱和度)范围是[0,255]

  • V(明度)范围是[0,255]

即HS两个通道就可以表示颜色,非常方便二维直方图的绘制

opencv中,如果我们想绘制二维维直方图,要用到三个API

  • calcHist
  • cvRound
  • minMaxLoc

介绍如下

calcHist

calcHist
	计算一维数组的直方图(输入图像可以有多通道)
		共10个参数
			第1个参数 图像数组
			第2个参数 输入图像数量
			第3个参数 通道数组
			第4个参数 可选mask
			
			第5个参数 输出直方图数据(值与对应频次)的n维数组
			第6个参数 直方图维数

					当通道为1个时,我们选择维度为1维,此时直方图数据就为一维数组
					当维度为2个时,我们选择维度为2维,此时直方图数据就为二维数组
					………………
					最大支持32维
					
					也就是说,n张图像 每张图像m个通道 可以计算出相应的直方图数据
					
					但对于绘制来说,一般都只绘制到2维,3维及以上就很复杂了

			第7个参数 histSize( bins数组,x轴长度)
			第8个参数 ranges(取值范围数组)
			
			//以下参数暂时用不到9个参数 指示直方图bin间隔是否一致
						默认为true,即等间隔取值
						如果为false,则range不能写{
   0,255}这种,就要写{
   1,1,……,1}这种
								
			第10个参数 累计标志(默认为false)
				    	当多张图像的时候,
				    		如果为true,则绘制直每张方图的时候,不会从头清空
				    		会在前者直方图的基础上继续

cvRound

cvRound
	将浮点数四舍五入到最近的整数
		共1个参数
			第1个参数 要处理的浮点数

minMaxLoc

minMaxLoc
	寻找最小/最大值
		共5个参数 
			第1个参数 输入
			第2个参数 输出的最小值
			第3个参数 输出的最大值
			第4个参数 最小值下标
			第5个参数 最大值下标

2.绘制二维直方图

本课中计算的直方图维数为2维,采取方式为

  • 先转换色彩空间为HSV
  • 然后进行每个通道的直方图数据计算,得到二维数组
  • 最后利用直方图二维数组绘制直方图
  • </
  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值