巧用OpenCV计算图片序列(矩阵)的直方图
来源:互联网 发布:数控编程代码z代表什么 编辑:程序博客网 时间:2024/05/17 01:08
最近做课题的时候需要对压缩视频中运动向量幅值和相位做统计。一直以来都是都是采用OpenCV做图像处理和视频分析。自然而然的想到了calcHist这个函数。
通过查看函数API,欣然得发现,刚好有函数原型为:
void calcHist(const Mat* images, int nimages, const int* channels, InputArray mask, OutputArray hist, int dims, const int* histSize, const float** ranges, bool uniform=true, bool accumulate=false );
以为这正是我要找的东西。然而通过尝试一番才发现,不能完成我想要的。虽然第一个参数传入的是图像指针,但是第二个参数即便是取大于1的数,结果还是仅仅统计一幅图像(严格地说是一个plane)。这不是我要的。而且,C++接口的Mat是一个类,平时很少用到Mat*。Mat 通常的使用方法都是得到引用,很少用指针。而我想要统计的多幅图像(或矩阵)也存储在vector<Mat> 中。本来想过调用Matlab,那里面的函数hist可以直接操作多维矩阵,不过还是不想因为这么一点小问题,就改变技术路线。于是采用了一个笨办法。自己写了一个函数对每一副图片进行统计,然后每次累加。结果还行,不过总是感觉不太爽。偌大一个OpenCV居然没有考虑到这一点?
最近几天刚好在网络上浏览技术博客时,偶尔发现了有人遇到相同的问题。http://www.cnblogs.com/tornadomeet/archive/2012/12/01/2797727.html
解决方法利用了calcHist最后一个参数accumlate,这样每次都自动的进行累加。比较巧妙。
心得:
1.千万不要仅仅把OpenCV的Mat,当做图像来用,数值矩阵都已用来存储的。视野要开阔。
2.对于一些参数要好好把握,有时候一个小小的参数都会有很精妙的运用。
总之,君子性非异,善假于物也!
- 巧用OpenCV计算图片序列(矩阵)的直方图
- OpenCV 学习(计算图像的直方图)
- opencv 3.0 直方图的计算
- 我的OpenCV学习笔记(13):计算直方图,利用查找表拉伸直方图,直方图均衡
- OpenCV Python教程(3、直方图的计算与显示)
- OpenCV Python教程(3、直方图的计算与显示)
- OpenCV Python教程(3、直方图的计算与显示)
- OpenCV Python教程(3、直方图的计算与显示)
- 有关opencv的学习(9)—计算图像直方图
- OpenCV Python教程(3、直方图的计算与显示)
- OpenCV【4】---calcHist 计算图像的直方图
- opencv图像直方图的计算及绘制
- 【OpenCV】直方图计算
- OpenCV 计算二维直方图
- opencv计算直方图
- opencv 计算直方图 calcHist()
- 用opencv画两幅图片的直方图
- OpenCv直方图对比图片的相似性
- sphinx使用心得
- 【二分+广搜】poj 2485 Highways
- 位运算符分析
- Java中的多态的详细讲解
- aix 压缩软件及工具库 下载地址
- 巧用OpenCV计算图片序列(矩阵)的直方图
- ++、--操作使用分析
- Effective c++ 笔记—视c++ 为一个语言联邦
- 编程之美 2.18 数组分割
- HDU/HDOJ1851 nim博弈和巴什博弈的结合
- Hibernate中实现模糊查询
- 如何使用VC的预编译技术(转载)
- 位运算
- 写个小程序有效突破SAT词汇关