opencv的Mat中step的解释
来源:互联网 发布:人民搜索网络股份公司 编辑:程序博客网 时间:2024/06/07 20:37
网络上对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的人看到这里就会明白一二了。
由于图像的构成是分层次的(也就是上面说的梯级),所以:
二维图像由一行一行(第一级)构成,而每一行又由一个一个点(第二级)构成
三维图像由一个一个名面(第一级)构成,每一个平面由一行一行(第二级)构成,每行由一个一个点(第三级)构成。
到这里,原因就呼之欲出了,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的解释
- opencv的Mat中step
- Mat中step的含义
- Opencv Mat矩阵中data、size、depth、elemSize、step等属性的理解
- Opencv Mat矩阵中data、size、depth、elemSize、step等属性的理解
- Opencv Mat矩阵中data、size、depth、elemSize、step等属性的理解
- Opencv Mat矩阵中data、size、depth、elemSize、step等属性的理解
- Opencv Mat矩阵中data、size、depth、elemSize、step等属性的理解
- opencv中mat的push_back。
- OpenCV中mat的type
- OpenCV中Mat的详解
- OpenCV中Mat的属性
- OpenCV中Mat的type
- OpenCV中Mat的详解
- opencv 中Mat的数据结构
- OpenCV中Mat的type
- OpenCV中对Mat里面depth,dims,channels,step,data,elemSize和数据地址计算的理解
- OpenCV中对Mat里面depth,dims,channels,step,data,elemSize和数据地址计算的理解
- 多级简易BOM
- char类型与Unicode编码
- Centos安装图形化界面
- CentOS 6网络配置
- 实现android异步调用WEB API的方法
- opencv的Mat中step的解释
- ruby的一些小技巧
- 如何将数据库由高版本降为低版本
- 关于ubuntu“下载软件仓库信息失败 检查您的网络连接“问题的解决办法
- 实现android异步调用WEB API的方法,并实现回调
- CodeSmith 使用教程(17) Merge策略
- volatile变量
- Eclipse下安装Aptana Studio 插件
- CodeSmith 使用教程: 总结