栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【opencv-c++】4.1-4.2 图像和大型数组类型

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【opencv-c++】4.1-4.2 图像和大型数组类型

4.1-4.2 图像和大型数组类型 动态可变的存储

我们将进入大型数组类型的世界,它们之中最主要的当属c v::Mat,这个结构可以视为是OpenCV所有C++实现的核心,OpenCV所有主要函数都或是c v::Mat类的成员,或是将cv::Mat作为参数,或是返回一个cv::Mat类型。很少有函数和这三者都没有关系。

cv::Ma t类用于表示任意维度的稠密数组。“稠密”表示该数组的所有部分都有一个值存储,即使这个值是0。对于大多数图像来说,都是以稠密数组的形式存储的;与此相对的当然还有稀疏数组,在spare array中被实现,稀疏数组中只有非0的数值会被存储。从结论上来说,如果数组的很多地方都是0,那么稀疏数组会非常节约内存。但是在数组比较稠密的时候,稀疏数组反而会浪费大量内存。一个常用的使用稀疏数组比稠密数组好的例子是,统计直方图大部分直方图的大部分数值都为0,我们没有必要存储所有值为0的部分。

cv::Mat类N维稠密数组

cv ::Mat类可以作为任意维度的数组使用,其数据可以看做是以按照栅格扫描顺序存储的n维数组。这意味着在一维数组中,元素是按顺序排列的;而在一个二维数组中,数据按行组织,每一行也按顺序排列,对于三维数组来说,所有的通道都被行填充,每一个通道同样按顺序排列。

所有的矩阵都含有一个表示它所包含数组类型的元素flag,一个表示其维度的元素dims,分别表示行和列的数目的元素rows和cols(在dims大于2的时候无效),一个指示数据真正存储位置的data指针,以及一个表示该内存区域有多少个引用的refcount元素,类似于cv::Ptr<>的引用计数器。这个成员cv::Ma t像智能指针一样管理内存区域。数据实体data的结构被step[]所描述。数据数组按如下公式来排列数据:

4.1 创建一个数组


4.2 独立获取数组元素


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/835479.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号