opencv的Mat中step的解释
网络上对Mat的详解,绝大多数是翻译官方的manual,而官方的manual却恰好对部分(官方认为)我们平时很少使用的内容没有详细的解释,或者对一些实现没有解释细节,因此我们就很难在刚入门时迅速地对某些内容有详细的认识,Mat的step就是其中之一。
在经过数天对Mat的研究,也对step有一定的认识了,这里说出我的愚见以抛砖引玉,有不足或错误之处希望各位指出,谢谢。
其实对step成员数组的解释就是step的意思,只要翻译对了,就能明白step的意思,step的翻译在这里不应该被翻译为步、脚步、步骤、步伐,而是” 梯级 “,也就是说step这里指出的是图像在各个梯级上的字节数大小,而这里的梯级指的是构成图像的名层次。
这里引用官方manual的几句话:
Note that M.step[i] >= M.step[i+1] (in fact, M.step[i] >= M.step[i+1]*M.size[i+1] ). This means
that 2-dimensional matrices are stored row-by-row, 3-dimensional matrices are stored plane-by-plane, and so on.
这句话可对刚入门图像处理的人(例如我~~)抓狂啊,为什么M.step[i]必定>= M.step[i+1] ??为什么这能说明2-dimensional matrices are stored row-by-row, 3-dimensional matrices are stored plane-by-plane, and so on ??
但事实上,了解图像构成,或者学过GIMP图像处理,甚至PS的人看到这里就会明白一二了。
就举那段话的2个例子大家就能明白了:
由于图像的构成是分层次的(也就是上面说的梯级),所以:
二维图像由一行一行(第一级)构成,而每一行又由一个一个点(第二级)构成
三维图像由一个一个名面(第一级)构成,每一个平面由一行一行(第二级)构成,每行由一个一个点(第三级)构成。
到这里,原因就呼之欲出了,Mat中的step[0]就是我们每一个第一级,在内存中占据的字节数量。例如,二维图像中step[0]就是每一行(第一级)在矩阵内存中,占据的字节的数量。也就是说step[i]就是第i+1级在矩阵内存中占据的字节的数量。
而每一级的字节数是多少就必须体现在下一级的数量上。
例如,二维图像中step[0](第一级)的大小与点的数量有关(第二级)。而每个点占据的大小,也就是step[M.dims − 1] 就成了关键了,它的大小是多少,这点我就下不了定论了,因为这点是我们自行定义的,我们可以定义不同的通道数,每个通道不同的字节数,然后 通道数×每个通道字节数 就得出step[M.dims − 1]了
--Jdps 2013.2.7
opencv的Mat中step的解释相关推荐
- Mat中step的含义
转载自:http://lib.csdn.net/article/opencv/28700 以三维的Mat数据布局为例 step这里指出的是图像在各个梯级上的字节数大小,而这里的梯级指的是构成图像的名层 ...
- opencv如何把一个矩阵不同列分离开_【opencv基础】OpenCV从Mat中提取某些行或列
前言 Opencv中可以调用函数提取某些连续的行或者列,Mat的rowRange和colRange可以获取某些范围内行或列的指针: 这两个函数返回的是指向原矩阵内部位置的指针,类似于浅拷贝: exam ...
- opencv提取Mat中的某些行和列
原始Mat格式数据: cv::Mat A = Mat::zeros(4, 5, CV_32F);[4行5列,高4宽5] 1.提取行 函数:Mat::rowRange(int startrow, int ...
- OpenCV从Mat中提取某些行或列
Mat的rowRange和colRange可以获取某些范围内行或列的指针: Mat::rowRange Creates a matrix header for the specified row sp ...
- OpenCV中Mat属性step,size,step1,elemSize,elemSize1
Mat的step,size,step1,elemSize,elemSize1这几个属性非常容易混淆. OpenCV的官方参考手册也没有解释清楚这几个概念. 前一段时间研究了一下每个属性的含义,如果有什 ...
- 【OpenCV】Mat的使用方法以及Mat中的参数和函数
Mat Mat的简单使用 从实际出发,先看看他干啥的,怎么用. 一般我们用到Mat有两个重要的用途: 1.存储图像(其实图像可以看成一个高行宽列的一个矩阵) 2.存储矩阵 先来看看Mat用于图像和矩阵 ...
- mat opencv 修改roi_OpenCV Android:在新Mat中定义并保存ROI(OpenCV Android: Define and save ROI in new Mat)...
OpenCV Android:在新Mat中定义并保存ROI(OpenCV Android: Define and save ROI in new Mat) 我正在尝试将我的图像的一部分切割(裁剪)到另 ...
- opencv获取mat的指针_数字图像处理之opencv中Mat数据操作
数字图像处理其实就是处理二维矩阵数据.利用opencv来学习处理算法是一种比较好的方式.学习opencv,主要就是调用其中的图像处理函数来实现各种操作.如果要得到想要的处理结果,还需要对图像处理算法有 ...
- ffmpeg解码到opencv Mat中
rtsp 接收解码与opencv结合并不是使用opencv直接打开rtsp 链接的意思,使用live555等工具或者自行编写后解码时与opencv直接融合 cv::Mat 解码时如何把解码数据直接放到 ...
最新文章
- RBee ZigBee无线透明传输通信模块 兼容arduino平台 类似XBee
- Redis Sentinel--运维管理
- mysql 双节点主从搭建_MySQL Replication, 主从和双主配置
- 无限式查找-----2013年2月28日
- 深度学习之卷积神经网络CNN理论与实践详解
- Mysql命令行下实现数据的导入
- 文科出身敲出 Instagram,被小札“挤”走,建新冠追踪网站
- push指令的执行过程
- json mysql 字段 默认值_MySQL JSON 类型数据操作
- 卸载mysql server_windows中彻底卸载mysql
- 华为HCIE云计算培训笔记第一天
- 同步电机是如何达到同步的?工作原理是什么?
- 单一窗口关区备案_【亚东关务】单一窗口集中申报来了,集报备案、集报清单详细操作手册...
- 如何用Smartbi做数据可视化分析图表
- python下标访问字典的指_python字典下标
- macOS Big Sur 11.7.2 (20G1020) 正式版 ISO、PKG、DMG、IPSW 下载
- iOS app加密探究爱加密iOS app加密原理
- 如何伪装成一个服务端开发(五)
- IDEA设置自定义主题背景
- mysql 配置环境变量的方法及作用
热门文章
- 提高女性区块链采用率,真正实现普遍接受
- 基于python的课程网站的设计与实现
- flash小黄油安卓_体验谷歌的Windows、安卓、Linux三合一系统,一个U盘足以
- 【随机过程】第二章——随机过程概论
- dz文件cp.php,DZ文件扩展名 - 什么是.dz以及如何打开? - ReviverSoft
- 特斯拉与宁波旭升 EDI项目案例
- vimeo 镜像_Vimeo的首席应用程序开发人员Kevin Sheurs访谈
- C#身份证验证封装的函数方法
- 130个微信小程序源码资源免费领取
- JOHNSON计数器,环形计数器,普通计数器