本示例程序主要是通过实例演示高维Mat的寻址方式。

    //3,4分别表示行数、列数,所以3*4是一个页面的元素数,2表示有2个3*4
int a=,b=,c=;
int size[]={a,b,c};
float* d1=new float[a*b*c];
for(int i=;i<a*b*c;i++)
d1[i] =(float)i;
Mat myND=Mat(,size,CV_32F,d1);
cout<<myND.step[]<<endl;//等于size中的3*4
cout<<myND.step[]<<endl;//对应size中的4
cout<<myND.step[]<<endl;//单个元素的字节数
int rows=myND.step1()/myND.step1();
int cols=myND.step1();
cout<<"rows="<<rows<<endl;
cout<<"cols="<<cols<<endl; for(int z=;z<a;z++)
{
cout<<endl<<"the "<<z<<"th plane";
for(int y=;y<rows;y++)
{ for(int x=;x<cols;x++)
{
if(x%cols==)
cout<<endl;
uchar*pa=(myND.data+myND.step[0]*z+myND.step[1]*y+myND.step[2]*x);
float*pij=(float*)pa;
cout<<*pij<<" "; } }
cout<<endl;
} return ;
}

上面的程序中,访问三维矩阵元素是,采用的方法是.data+step[0]*z+myND.step[1]*y+myND.step[2]*x

Mat的成员函数at(z,y,x)方法,也可以遍历每一个元素:

    //3,4分别表示列数、行数,所以3*4是一个页面的元素数,2表示有2个3*4
int a=,b=,c=;
int size[]={a,b,c};
float* d1=new float[a*b*c];
for(int i=;i<a*b*c;i++)
d1[i] =(float)i;
Mat myND=Mat(,size,CV_32F,d1);
cout<<myND.step[]<<endl;//等于size中的3*4
cout<<myND.step[]<<endl;//对应size中的4
cout<<myND.step[]<<endl;//单个元素的字节数
int rows=myND.step[]/myND.step[];
int cols=myND.step[]/myND.elemSize();
cout<<"rows="<<rows<<endl;
cout<<"cols="<<cols<<endl; for(int z=;z<a;z++)
{
cout<<endl<<"the "<<z<<"th plane";
for(int y=;y<rows;y++)
{ for(int x=;x<cols;x++)
{
if(x%cols==)
cout<<endl;
float p=myND.at<float>(z,y,x);
cout<<p<<" ";
} }
cout<<endl;
}
return ;
}

下面是运行结果与上图一致。

opencv中的高维矩阵Mat的更多相关文章

  1. OpenCV中图像的格式Mat 图像深度

    opencv中图像的格式Mat 有图像的定义,图像深度.类型格式等,其中Mat的参数depth为深度,深度反应出图像颜色像素值: 关于数据的储存:(转) Mat_<uchar>对应的是CV ...

  2. OpenCV 中获取图像或矩阵最大、最小值的简便方法

    C++: void minMaxLoc(InputArray src, double* minVal, double* maxVal=0, Point* minLoc=0, Point* maxLoc ...

  3. opencv中各种矩阵乘的差别

    尊重原创,转载请注明:http://blog.csdn.net/tangwei2014 OpenCV中每次遇到矩阵乘法就乱,各种翻各种查. 这次总结了一下.为了简单明了,还是让样例说话. 1. Mat ...

  4. Numpy和OpenCV中的图像几何变换

    介绍 上面的图像使它不言而喻什么是几何变换.它是一种应用广泛的图像处理技术.例如,在计算机图形学中有一个简单的用例,用于在较小或较大的屏幕上显示图形内容时简单地重新缩放图形内容. 它也可以应用于扭曲一 ...

  5. Opencv中Mat矩阵相乘——点乘、dot、mul运算详解

    Opencv中Mat矩阵相乘——点乘.dot.mul运算详解 2016年09月02日 00:00:36 -牧野- 阅读数:59593 标签: Opencv矩阵相乘点乘dotmul 更多 个人分类: O ...

  6. OpenCV中对Mat里面depth,dims,channels,step,data,elemSize和数据地址计算的理解 (转)

    cv::Matdepth/dims/channels/step/data/elemSizeThe class Mat represents an n-dimensional dense numeric ...

  7. opencv中Mat与IplImage,CVMat类型之间转换

    opencv中对图像的处理是最基本的操作,一般的图像类型为IplImage类型,但是当我们对图像进行处理的时候,多数都是对像素矩阵进行处理,所以这三个类型之间的转换会对我们的工作带来便利. Mat类型 ...

  8. OpenCV中的矩阵乘法运算

    转载:http://blog.csdn.net/tangwei2014 OpenCV中矩阵乘法运算 1. Mat*Mat: 第一个矩阵的列数必须等于第二个矩阵的行数. [0, 1, 2, 3;     ...

  9. OpenCV中Mat的详解

    每次碰到Mat都得反复查具体的用法,网上的基础讲解不多,难得看到一篇,赶快转来收藏~ 原文地址:http://www.opencvchina.com/thread-1039-1-1.html 目标 我 ...

随机推荐

  1. 【软件工程】Alpha冲刺(3/6)

    链接部分 队名:女生都队 组长博客: 博客链接 作业博客:博客链接 小组内容 恩泽(组长) 过去两天完成了哪些任务 描述 对推送模块进行详细划分 基于用户的协同过滤,寻找更感兴趣的话题 学习API文档 ...

  2. AppiumLibrary移动APP测试

    使用Genymotion模拟器结合RF执行 前提搭建环境参考<python_Appium测试环境搭建>文章详细介绍. 常用关键字 关  键  字 描   述 Click Button 点击 ...

  3. DP&图论 DAY 2 下午

    DP&图论  DAY 2  下午 基础树形DP 前言◦ 1:与树或图的生成树相关的动态规划.◦ 2:以每棵子树为子结构,在父亲节点合并,注意树具有天然的子结构.这是很优美的很利于dp的.◦ 3 ...

  4. 如何实现一个串行promise

    异步执行任务A.B.C,...... 1.使用数组的reduce方法,reduce里有四个参数,pre,next,index,arr, 2.如果then方法里返回的是一个promise对象,那么执行下 ...

  5. tensorflow分布式运行

    1.知识点 """ 单机多卡:一台服务器上多台设备(GPU) 参数服务器:更新参数,保存参数 工作服务器:主要功能是去计算 更新参数的模式: 1.同步模型更新 2.异步模 ...

  6. oracle 查看数据库和表命令

    1.su – oracle 不是必需,适合于没有DBA密码时使用,可以不用密码来进入sqlplus界面. 2.sqlplus /nolog 或sqlplus system/manager 或./sql ...

  7. easy dragging script

    下面的ahk脚本提供了windows下alt dragging的能力: ; Easy Window Dragging -- KDE style (requires XP/2k/NT) -- by Jo ...

  8. (3)TinyXml2的详解及使用

        TinyXml2是开源的c++xml文件解析库,简单实用,非常适合存储简单数据,配置文件,对象序列化等数据量不是很大的操作.   (1)DOM DOM(Document Object Mode ...

  9. 2019.12.04 ADT on eclipse 配置篇

    今天看JerryWang的简书博客https://www.jianshu.com/p/74ad8e4bbc49 ,SAP GUI 和ADT是互为补充的关系,有很多SAP新出的技术都没有办法在GUI上开 ...

  10. AESTest

    using Gaea.MySql; using System; using System.Data; using System.IO; using System.Security.Cryptograp ...