本示例程序主要是通过实例演示高维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. HBuilder开发MUI web app溢出页面上下无法滚动问题

    因为没有对页面初始化,所以页面溢出部分不会显示,要解决此问题需要加上下面代码: JS代码: (function($){$(".mui-scroll-wrapper").scroll ...

  2. 黑马vue---13、事件修饰符的介绍

    黑马vue---13.事件修饰符的介绍 一.总结 一句话总结: .stop 阻止冒泡:input type="button" value="戳他" @click ...

  3. python 构建自己的log系统

    python的logging模块提供了记录程序运行情况的日志功能,类似于Apache的log4j,很好很强大,这里我们就来看一下Python中内置的日志模块logging用法详解 logging模块简 ...

  4. StringUtils字符串工具类左侧补齐(leftPad)、右侧补齐(rightPad)、左右两侧补齐(center)工具方法

    这里使用的是 org.apache.commons.lang.StringUtils;下面是StringUtils工具类中字符串左侧补齐的方法,示例如下: //左侧补齐 第一个参数:原始字符串,第二个 ...

  5. [idea]添加jar包的方法

    一:在项目的根目录下建立lib文件夹,然后将对应的jar包文件拷贝进去. 二:点击项目右键,选择Open Module Settings 三.选择Project Settings->Librar ...

  6. 小米监控--Open-Falcon

    #安装下载软件yum -y install wget #更换aliyun源mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Ba ...

  7. js 中实现 汉字按拼音排序

    let arr = ["贵州省", "江苏省", "江西省", "浙江省", "四川省", &quo ...

  8. linux 基础 配置静态IP

    1.查看本机windows默认网关.DNS 2.配置linux 3.查询网络配置 4.xshell 登录 一 查看本机windows默认网关.DNS 二 配置linux(注意:默认网关.dns,必须跟 ...

  9. iOS UItextView监听输入特定字符跳转页面选择选项返回

    今天有朋友问我一个需求的实现,于是自己写了一个Demo简单的实现了一下: 需求是: 1>比如: 检测用户输入"A"字符串,跳转页面选择选项,将选择的选项放置textView里 ...

  10. Python操作SQLite

    1. 导入sqlite3数据库模块,从python2.5以后,sqlite3成为内置模块,不需要额外安装,只需要导入即可. import sqlite3 2.创建/打开数据库 使用connect方法打 ...