OpenCV学习(4)——动态结构
学习一个新知识,无外乎学习它本身和它的工具。OpenCV提供许多内置的结构及处理函数,非常值得学习。
内存存储
在OpenCV中,内存存储器是一个可以用来存储序列、数组和图像的动态增长的数据结构。它由一系列的等大小的内存块组成,是一个线性结构。
|
1
2 3 4 5 6 7 8 |
typedef struct CvMemStorage
{ struct CvMemBlock *bottom; struct CvMemBlock *top; struct CvMemStorage *parent; int block_size; int free_space; } CvMemStorage; |
bottom指的是列首,top指的是当前指向的块但未必是列尾。在bottom和top之间所有的块(包括bottom, 不包括top)被完全占据了空间;在top和列尾之间所有的块(包括块尾,不包括top)则是空的;而top块本身则被占据了部分空间;free_space指的是top块剩余的空字节数。
|
1
2 3 4 5 |
);
//删除内存块 |
序列
稠密序列都派生自CvSeq,用来代表可扩展的一维数组―向量、栈、队列和双端队列。数据间不存在空隙(即连续存放)。如果元素从序列中间被删除或插人新的元素到序列中(不是插人到两端),那么此元素后边的相关元素会被移动。
稀疏序列都派生自CvSet,CvSet是基于CvSeq。它们都是由结点所组成的序列,每一个结点要么被占用要么是空的。这些序列作为无序的数据结构被使用,如点集、图、哈希表等。
|
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
);
//添加元素到指定位置 //删除指定位置元素 //返回索引位置的元素的指针 //将数据写入序列 //创建新序列,初始化写入部分 //完成写入操作 //初始化序列中的读取过程 |
集合
在OpenCV中,Cvset用来代表图形、稀疏多维数组和平面子划分等。
|
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
//创建空的集合
CvSet* cvCreateSet(int set_flags , int header_size , int elem_size , CvMemStorage* storage); //创建集合中的一个结点 //从集合中删除元素 //添加元素 //删除指针指向的元素 //索引元素集合 //清空集合 |
图
|
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
//创建图
CvGraph* cvCreateGraph(int graph_flags , int header_size , int vtx_size , int edge_size , CvMemSorage* storage); //插入顶点 //删除一个顶点 //通过指针删除顶点 //通过索引查找顶点 //返回相应的索引值 //通过索引添加边 //通过指针添加边 //通过索引删除边 //通过指针删除边 |
树
|
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
//初始化树迭代器
void cvInitTreeNodeIterator(TreeNodeIterator* tree_iterator , const void* first , int max_level); //返回当前节点,迭代器移动到下一个节点 //返回当前节点,迭代器移动到前个节点 //将所有节点放在序列中 //插入节点 //删除节点 |
OpenCV学习(4)——动态结构的更多相关文章
- 【opencv学习笔记二】opencv3.4.0组件结构说明
在学习opencv使用之前我们先来看一下opencv有哪些组件结构.至于OpenCV组件结构的研究方法, 我们不妨管中窥豹,通过opencv安装路径下include目录里面头文件的分类存放,来一窥Op ...
- OpenCV——CvSeq动态结构序列
动态结构序列CvSeq是所有OpenCV动态数据结构的基础. 分为两类: 稠密序列 稀疏序列 (1) 稠密序列都派生自CvSeq,他们用来代表可扩展的一维数组 - 向量.栈.队列和双端队列.数据间不存 ...
- opencv学习笔记(三)基本数据类型
opencv学习笔记(三)基本数据类型 类:DataType 将C++数据类型转换为对应的opencv数据类型 OpenCV原始数据类型的特征模版.OpenCV的原始数据类型包括unsigned ch ...
- opencv学习笔记(一)IplImage, CvMat, Mat 的关系
opencv学习笔记(一)IplImage, CvMat, Mat 的关系 opencv中常见的与图像操作有关的数据容器有Mat,cvMat和IplImage,这三种类型都可以代表和显示图像,但是,M ...
- (转) OpenCV学习笔记大集锦 与 图像视觉博客资源2之MIT斯坦福CMU
首页 视界智尚 算法技术 每日技术 来打我呀 注册 OpenCV学习笔记大集锦 整理了我所了解的有关OpenCV的学习笔记.原理分析.使用例程等相关的博文.排序不分先后,随机整理的 ...
- OpenCV学习笔记(一)安装及运行第一个OpenCV程序
1.下载及安装 OpenCV是一套开源免费的图形库,主要有C/C++语言编写,官网: http://opencv.org/ .在 http://opencv.org/downloads.html 可以 ...
- OpenCV学习笔记(27)KAZE 算法原理与源码分析(一)非线性扩散滤波
http://blog.csdn.net/chenyusiyuan/article/details/8710462 OpenCV学习笔记(27)KAZE 算法原理与源码分析(一)非线性扩散滤波 201 ...
- opencv学习系列:连通域参考处理
OpenCV里提取目标轮廓的函数是findContours,它的输入图像是一幅二值图像,输出的是每一个连通区域的轮廓点的集合:vector<vector<Point>>. 外层 ...
- OpenCV 学习笔记03 findContours函数
opencv-python 4.0.1 1 函数释义 词义:发现轮廓! 从二进制图像中查找轮廓(Finds contours in a binary image):轮廓是形状分析和物体检测和识别的 ...
随机推荐
- Round 1A 2020 - Code Jam 2020
Problem A. Pattern Matching 把每个字符串分成第一个之前,最后一个之后,中间的部分 三个部分 每个字符串的中间的部分可以直接拼接 前后两个部分需要判断下是否合法 #inclu ...
- k8s集群搭建笔记(细节有解释哦)
本文中所有带引号的命令,请手动输入引号,不知道为什么博客里输入引号,总是自动转换成了中文 基本组成 pod:k8s 最小单位,类似docker的容器(也许) 资源清单:资源.资源清单语法.pod生命周 ...
- Eclipse(Eclipse for android)代码自动提示设置
java代码和xml资源代码在有的eclipse中可以自己提示,但有的并不支持这个功能,还得我们人为去调整,主要原因是因为你们下载的elipse的渠道不同,获得的版本有的官方原版,有的是个人备份版等等 ...
- .bundle文件如何安装
1. sudo chmod +x X.bundle 2. sudo X.bundle
- 35 编码 ASCII Unicode UTF-8 ,字符串的编码、io流的编码
* 编码表: * 信息在计算机上是用二进制表示的,这种表示法让人理解就很困难.为保证人类和设备,设备和计算机之间能进行正确的信息交换,人们编制的统一的信息交换代码,这就是ASCII码表 *ASCII ...
- String 对象-->charAt() 方法
1.定义和用法 charAt() 方法获取指定下标的字符,下标从0开始 语法: string.charAt(index) 参数: index:指定的下标 举例:获取下标为2的字符 var str = ...
- .NET Core技术研究-主机
前一段时间,和大家分享了 ASP.NET Core技术研究-探秘Host主机启动过程 但是没有深入说明主机的设计.今天整理了一下主机的一些知识,结合先前的博文,完整地介绍一下.NET Core的主机的 ...
- python初学(一)
1.输入一个百分制成绩,要求输出成绩等级A.B.C.D.E,其中90~100分为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E. 要求:1)用if语句实现:2)输入百分制成绩 ...
- ModuleNotFoundError: No module named 'sklearn.cross_validation'
本文为CSDN博主「不服输的南瓜」的原创文章,遵循 CC 4.0 BY-SA 版权协议 原文链接 ModuleNotFoundError: No module named 'sklearn.cross ...
- DLL/OCX文件的注册与数据执行保护DEP
注册/反注册dll或ocx文件时,无论是用regsvr32还是DllRegisterServer/DllUnregisterServer,可能会遇到[内存位置访问无效]的问题: 此时把操作系统的数据执 ...