OpenCV学习笔记(三十九)——再谈OpenCV的数据结构,Mat是如此强大
2015-06-04 17:13
225 查看
网址:http://blog.csdn.net/yang_xian521/article/details/7107072
还是一个实时性要求的程序最近把我弄得有些上火。为了提高代码运行的速度,我也是又新啃东西学了。由于我代码里使用了vector,网上搜来搜去有人说vector慢,又有人说STL里的sort排序速度是我等常人不能企及的,有人说要少resize,这个重新分配内存非常耗时,又有人说要用swap来彻底删除不要的内存空间。带着这么多疑问,我实在不知道我程序慢的原因。于是乎阅读了《Effective STL》,这书挺深的,粗浅读读,先把自己急着弄清楚的以上各问题弄懂。再看程序,做了些优化,速度还是提高不多,头开始大了
我的解决办法是用我上一讲提到的getTickCount、getTickFrequency函数分析我代码的运行时间,遇到的问题是下面这句非常耗时
[cpp] view
plaincopy
vector<vector<int>>test = vector<vector<int>>(10000, vector<int>(10, 0));
10000*10只是我要开辟的空间,不知道怎么用reserve函数开辟,这句运行了大概100ms。今天再看这段代码,发现我太傻了,何必要用vector<vector<int>>呢,完全可以用OpenCV自带的Mat来解决啊,于是把上面这句改写如下
[cpp] view
plaincopy
Mat test1 = Mat_<int>::zeros(10000, 10);
结果只需要0.2ms!!!同志们,STL在Mat面前都显得如此无力啊,有木有啊!我决定花费几天的时间再好好读读reference的core的部分,来吃透OpenCV的数据结构。而且感觉Mat跟STL的兼容性很好,也有push_back,pop_back这样的操作,所以啊,同志们,千万别把Mat只当做是显示图片用的,它是很强大的数据结构,用了它,可以事半功倍,谁用谁知道!~~
还是一个实时性要求的程序最近把我弄得有些上火。为了提高代码运行的速度,我也是又新啃东西学了。由于我代码里使用了vector,网上搜来搜去有人说vector慢,又有人说STL里的sort排序速度是我等常人不能企及的,有人说要少resize,这个重新分配内存非常耗时,又有人说要用swap来彻底删除不要的内存空间。带着这么多疑问,我实在不知道我程序慢的原因。于是乎阅读了《Effective STL》,这书挺深的,粗浅读读,先把自己急着弄清楚的以上各问题弄懂。再看程序,做了些优化,速度还是提高不多,头开始大了
我的解决办法是用我上一讲提到的getTickCount、getTickFrequency函数分析我代码的运行时间,遇到的问题是下面这句非常耗时
[cpp] view
plaincopy
vector<vector<int>>test = vector<vector<int>>(10000, vector<int>(10, 0));
10000*10只是我要开辟的空间,不知道怎么用reserve函数开辟,这句运行了大概100ms。今天再看这段代码,发现我太傻了,何必要用vector<vector<int>>呢,完全可以用OpenCV自带的Mat来解决啊,于是把上面这句改写如下
[cpp] view
plaincopy
Mat test1 = Mat_<int>::zeros(10000, 10);
结果只需要0.2ms!!!同志们,STL在Mat面前都显得如此无力啊,有木有啊!我决定花费几天的时间再好好读读reference的core的部分,来吃透OpenCV的数据结构。而且感觉Mat跟STL的兼容性很好,也有push_back,pop_back这样的操作,所以啊,同志们,千万别把Mat只当做是显示图片用的,它是很强大的数据结构,用了它,可以事半功倍,谁用谁知道!~~
相关文章推荐
- OpenCV学习笔记(四十)——再谈OpenCV数据结构Mat详解
- ZH奶酪:【数据结构与算法】搜索之BFS
- 数据结构与算法分析 L1
- 数据结构与算法分析-索引
- 5. C#数据结构与算法 -- 非线性结构(树,二叉树,二叉查找树)
- 数据结构与算法分析-数学知识复习
- 数据结构与算法分析-排序
- 4. C#数据结构与算法 -- 集合结构
- (C语言-数据结构与算法)还原二叉树
- 3. C#数据结构与算法 -- 线性结构(线性表,栈,队列,循环队列)
- 数据结构题目
- python-数据结构
- <数据结构学习与实验指导>3-1一元多项式求导/3-2汉诺塔的非递归实现
- java数据结构题之约瑟夫问题
- STL 的一些数据结构比较
- <数据结构学习与实验指导>2-12两个有序链表序列的交集/2-13两个有序序列的中位数
- <数据结构学习与实验指导>2-10海盗分赃/2-11两个有序链表序列的合并
- <数据结构学习与实验指导>2-8用扑克牌计算24点/2-9装箱问题模拟
- 数据结构之区间K大数
- 数据结构之链式队列的所有操作