OpenCV关于直方图的各种用法

在实验中,需要用到OpenCV直方图,并读取其中的bins里的信息,于是做了一些测试,确定了OpenCV直方图的创建方法与bins(直方图的格子们)信息读取方法。

1.如何使用自己的数据建立直方图结构。
使用的函数为cvMakeHistHeaderForArray()

hist
为函数所初始化的直方图头
data
用来存储直方块的数组

举个例子来理解上面函数中的各个参数,下面我将使用自己创建的数据来创建一个一维的直方图,看过《学习OpenCV》的人对于大部分参数应该都理解了,这里就着重介绍和函数cvMakeHistHeaderForArray关系密切的参数。


函数需要一个指向结构CvHistogram 的指针hist,这个指针在使用之前必须经过初始化,即必须是分配过空间的。这个函数还有dims,sizes,ranges,uniform这几个参数,说明这个函数还可以以这些参数产生新的直方图。经过测试,这个函数返回的直方图hist1和以形参形式传入的hist的值是一样的。
其实我很奇怪,不知道这个函数这样做的原因是什么,既然函数运行会改变形参对应的直方图hist的值,那为什么还要来个返回值呢?

2.如何改变直方图bins中的数据。
我想这个很多看过《学习OpenCV》的高手应该都知道了,我是第二遍回来看的时候才感觉到的,所以还是说下吧。
第一个方法是使用函数cvGetHistValue_1D(CvHistogram* hist,int idx0)这个函数接受一个直方图结构和一个索引值,并返回一个指向对应bins的一个指针ptr。那么就可以使用这个指针访问这个bins的值了。比如给这个bins重新赋值为56,语句为“*ptr=56.f”。
第二个方法是使用指针定位直方图中数据结构部分的数据。”hist->mat.data.fl[0]”这里我假设我访问的是一维直方图的第一个元素。同样的,用“hist->mat.data.fl[0]=56”就可以进行赋值操作了。

上面就是今天下午工作的总结,不多,而且很乱,希望观众能谅解。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值