【OpenCV学习】内存分配讨论两例

简介: 作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.在求矩阵转置方面,cvReshape比cvTranspose要好: cvMat* matT, hdr; matT = cvReshape( mat, &hdr, CV_MAT_CN(mat...

作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/

1.在求矩阵转置方面,cvReshape比cvTranspose要好:
cvMat* matT, hdr;
matT = cvReshape( mat, &hdr, CV_MAT_CN(mat->type), mat->cols );
以上方式比下边的方式要好
CvMat* matT = cvCreateMat( mat->cols, mat->rows, mat->type );
cvTranpose( mat, matT );
cvReleaseMat( &matT );
原因是cvReshape在转置时不需要内存分配。
CvMat* mat, hdr;
mat = cvReshape( orig, &hdr, nChannel, nRow );
mat的地址指向的是orig的地址,而没有重新分配地址,形如CvMat* cvXxx( const CvMat*, &hdr )的函数都是这样的。
当然这种方式只适用于部分向量,而不适用于由
cvGetRow或者cvGetCols得到的向量,因为这样得到的向量内存是不连续的。
2.通过cvGetRow达到cvSetRow的目的
这个纯属是上边那个结论的小技巧,我们用cvGetRow取出指定行,其实就是取出指向指定行的地址,
然后用cvCopy来修改,原行自然就被改动了:
CvMat *row, hdr;
row = cvGetRow( mat, &hdr, 1 );
cvCopy( another_row, row );
// mat also modified.

作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/


               作者:gnuhpc
               出处:http://www.cnblogs.com/gnuhpc/
               除非另有声明,本网站采用知识共享“署名 2.5 中国大陆”许可协议授权。


分享到:

目录
相关文章
|
2月前
|
缓存 算法 Java
JVM知识体系学习六:JVM垃圾是什么、GC常用垃圾清除算法、堆内存逻辑分区、栈上分配、对象何时进入老年代、有关老年代新生代的两个问题、常见的垃圾回收器、CMS
这篇文章详细介绍了Java虚拟机(JVM)中的垃圾回收机制,包括垃圾的定义、垃圾回收算法、堆内存的逻辑分区、对象的内存分配和回收过程,以及不同垃圾回收器的工作原理和参数设置。
73 4
JVM知识体系学习六:JVM垃圾是什么、GC常用垃圾清除算法、堆内存逻辑分区、栈上分配、对象何时进入老年代、有关老年代新生代的两个问题、常见的垃圾回收器、CMS
|
6月前
|
存储 C语言
C语言学习记录——动态内存函数介绍(malloc、free、calloc、realloc)
C语言学习记录——动态内存函数介绍(malloc、free、calloc、realloc)
411 1
|
2月前
|
存储 Java
JVM知识体系学习四:排序规范(happens-before原则)、对象创建过程、对象的内存中存储布局、对象的大小、对象头内容、对象如何定位、对象如何分配
这篇文章详细地介绍了Java对象的创建过程、内存布局、对象头的MarkWord、对象的定位方式以及对象的分配策略,并深入探讨了happens-before原则以确保多线程环境下的正确同步。
58 0
JVM知识体系学习四:排序规范(happens-before原则)、对象创建过程、对象的内存中存储布局、对象的大小、对象头内容、对象如何定位、对象如何分配
|
6月前
|
NoSQL Java Redis
Redis系列学习文章分享---第十八篇(Redis原理篇--网络模型,通讯协议,内存回收)
Redis系列学习文章分享---第十八篇(Redis原理篇--网络模型,通讯协议,内存回收)
87 0
|
6月前
|
缓存 Java
《JVM由浅入深学习九】 2024-01-15》JVM由简入深学习提升分(生产项目内存飙升分析)
《JVM由浅入深学习九】 2024-01-15》JVM由简入深学习提升分(生产项目内存飙升分析)
52 0
|
6月前
|
编译器 C语言 C++
C语言学习记录——位段(内存分配、位段的跨平台、位段的应用)
C语言学习记录——位段(内存分配、位段的跨平台、位段的应用)
60 0
|
4月前
|
存储 JavaScript 前端开发
学习JavaScript 内存机制
【8月更文挑战第23天】学习JavaScript 内存机制
37 3
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
OpenCV与AI深度学习之常用AI名词解释学习
AGI:Artificial General Intelligence (通用人工智能):是指具备与人类同等或超越人类的智能,能够表现出正常人类所具有的所有智能行为。又被称为强人工智能。
137 2
|
6月前
|
C语言 C++
C语言学习记录——内存函数(memcpy、memmove、memcmp、memset、模拟实现memcpy、模拟实现memmove)
C语言学习记录——内存函数(memcpy、memmove、memcmp、memset、模拟实现memcpy、模拟实现memmove)
70 3
|
6月前
|
C语言
C语言学习记录——通讯录(静态内存)
C语言学习记录——通讯录(静态内存)
33 2

热门文章

最新文章