opencv中的矩阵形式
2016-01-21 16:54
162 查看
矩阵和图像类型,如下三个类型的继承关系。CvArr是一个虚基类。在函数原型中出现的CvArr*。是直接用CvMat*或IplImage*传递到程序的。
CvArr->CvMat->IplImage
关于Mat,图像容器类,新版本opencv中定义的
(1)为其开辟空间
(2)在不需要时立即将空间释放
OpenCV是一个包括了大量的图像处理函数,为了解决问题就需要多个函数之间传递图像,而图像所使用的矩阵会是很大的数量,所以在万不得已情况下,我们不应该拷贝大的图像,同样的图像处理中,会使用引用计数机制,不然在拷贝过程中耗时长。其实就是针对每个Mat对象,它的矩阵是指向一个共享区域的,而拷贝构造函数就只用拷贝信息头和矩阵指针了(浅拷贝)。由于创建一个对象,引用指针会加1,释放一个对象,这个而计数就会减1;当计数值为0时,矩阵会被清理。所以保证了不会内存泄露。这就是OpenCv函数输出图像的自动完成的内存分配原理。
在需要进行深拷贝时,可以用其中的两个函数clone()或者copyTo()。
CvArr->CvMat->IplImage
关于Mat,图像容器类,新版本opencv中定义的
(1)为其开辟空间
(2)在不需要时立即将空间释放
OpenCV是一个包括了大量的图像处理函数,为了解决问题就需要多个函数之间传递图像,而图像所使用的矩阵会是很大的数量,所以在万不得已情况下,我们不应该拷贝大的图像,同样的图像处理中,会使用引用计数机制,不然在拷贝过程中耗时长。其实就是针对每个Mat对象,它的矩阵是指向一个共享区域的,而拷贝构造函数就只用拷贝信息头和矩阵指针了(浅拷贝)。由于创建一个对象,引用指针会加1,释放一个对象,这个而计数就会减1;当计数值为0时,矩阵会被清理。所以保证了不会内存泄露。这就是OpenCv函数输出图像的自动完成的内存分配原理。
在需要进行深拷贝时,可以用其中的两个函数clone()或者copyTo()。
相关文章推荐
- python中使用OpenCV进行人脸检测的例子
- opencv 做人脸识别 opencv 人脸匹配分析
- 使用opencv拉伸图像扩大分辨率示例
- 基于C++实现kinect+opencv 获取深度及彩色数据
- OpenCV 2.4.3 C++ 平滑处理分析
- 利用Python和OpenCV库将URL转换为OpenCV格式的方法
- python结合opencv实现人脸检测与跟踪
- Python实现OpenCV的安装与使用示例
- 在树莓派2或树莓派B+上安装Python和OpenCV的教程
- opencv-python学习一--人脸检测
- 在Ubuntu上安装OpenCV3.0和Python-openCV的经历
- OpenCV配置,从来没有这么简单!
- ubuntu下opencv和qt的安装配置
- OpenCV学习笔记(二十五)——OpenCV图形界面设计Qt+VS2008
- 分享一些OpenCV实现立体视觉的经验
- 关于OpenCv图像变换与基本图形检测
- "应用程序正常初始化失败"-0xc0150002 解决办法
- OpenCV->HSV色彩空间
- opencv 内存泄露
- OpenCV函数cvFindContours