下载此文档

OpenCV学习笔记.doc


文档分类:外语学习 | 页数:约10页 举报非法文档有奖
1/10
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/10 下载此文档
文档列表 文档介绍
OpenCV学****笔记(三)人脸检测的代码分析一、预备知识:1、动态内存存储及操作函数CvMemStoragetypedefstructCvMemStorage{structCvMemBlock*bottom;/*firstallocatedblock*/structCvMemBlock*top;/*thecurrentmemoryblock-topofthestack*/structCvMemStorage*parent;/*borrowsnewblocksfrom*/intblock_size;/*blocksize*/intfree_space;/*freespaceinthetopblock(inbytes)*/}CvMemStorage;内存存储器是一个可用来存储诸如序列,轮廓,图形,子划分等动态增长数据结构的底层结构。它是由一系列以同等大小的内存块构成,呈列表型---bottom域指的是列首,(包括bottom,不包括top)被完全占据了空间;在top和列尾之间所有的块(包括块尾,不包括top)则是空的;而top块本身则被占据了部分空间--free_space指的是top块剩余的空字节数。新分配的内存缓冲区(或显示的通过cvMemStorageAlloc函数分配,或隐示的通过cvSeqPush,cvGraphAddEdge等高级函数分配)总是起始于当前块(即top块)的剩余那部分,如果剩余那部分能满足要求(够分配的大小)。分配后,free_space就减少了新分配的那部分内存大小,外加一些用来保存适当列型的附加大小。当top块的剩余空间无法满足被分配的块(缓冲区)大小时,top块的下一个存储块被置为当前块(新的top块)--free_space被置为先前分配的整个块的大小。如果已经不存在空的存储块(即:top块已是列尾),则必须再分配一个新的块(或从parent那继承,见cvCreateChildMemStorage)并将该块加到列尾上去。于是,存储器(memorystorage)就如同栈(Stack)那样,bottom指向栈底,(top,free_space)对指向栈顶。栈顶可通过cvSaveMemStoragePos保存,通过cvRestoreMemStoragePos恢复指向,通过cvClearStorage重置。CvMemBlock内存存储块结构typedefstructCvMemBlock{structCvMemBlock*prev;structCvMemBlock*next;}CvMemBlock;CvMemBlock代表一个单独的内存存储块结构。内存存储块中的实际数据存储在header块之后(即:存在一个头指针head指向的块header,该块不存储数据),于是,内存块的第i个字节可以通过表达式((char*)(mem_block_ptr+1))[i]获得。然而,通常没必要直接去获得存储结构的域。CvMemStoragePos内存存储块地址typedefstructCvMemStoragePos{CvMemBlock*top;intfree_space;}CvMemStoragePos;该结构(如以下所说)保存栈顶的地址,栈顶可以通过cvSaveMemS

OpenCV学习笔记 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数10
  • 收藏数0 收藏
  • 顶次数0
  • 上传人260933426
  • 文件大小47 KB
  • 时间2020-02-27