opencv中的高维矩阵Mat
本示例程序主要是通过实例演示高维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的更多相关文章
- OpenCV中图像的格式Mat 图像深度
opencv中图像的格式Mat 有图像的定义,图像深度.类型格式等,其中Mat的参数depth为深度,深度反应出图像颜色像素值: 关于数据的储存:(转) Mat_<uchar>对应的是CV ...
- OpenCV 中获取图像或矩阵最大、最小值的简便方法
C++: void minMaxLoc(InputArray src, double* minVal, double* maxVal=0, Point* minLoc=0, Point* maxLoc ...
- opencv中各种矩阵乘的差别
尊重原创,转载请注明:http://blog.csdn.net/tangwei2014 OpenCV中每次遇到矩阵乘法就乱,各种翻各种查. 这次总结了一下.为了简单明了,还是让样例说话. 1. Mat ...
- Numpy和OpenCV中的图像几何变换
介绍 上面的图像使它不言而喻什么是几何变换.它是一种应用广泛的图像处理技术.例如,在计算机图形学中有一个简单的用例,用于在较小或较大的屏幕上显示图形内容时简单地重新缩放图形内容. 它也可以应用于扭曲一 ...
- Opencv中Mat矩阵相乘——点乘、dot、mul运算详解
Opencv中Mat矩阵相乘——点乘.dot.mul运算详解 2016年09月02日 00:00:36 -牧野- 阅读数:59593 标签: Opencv矩阵相乘点乘dotmul 更多 个人分类: O ...
- OpenCV中对Mat里面depth,dims,channels,step,data,elemSize和数据地址计算的理解 (转)
cv::Matdepth/dims/channels/step/data/elemSizeThe class Mat represents an n-dimensional dense numeric ...
- opencv中Mat与IplImage,CVMat类型之间转换
opencv中对图像的处理是最基本的操作,一般的图像类型为IplImage类型,但是当我们对图像进行处理的时候,多数都是对像素矩阵进行处理,所以这三个类型之间的转换会对我们的工作带来便利. Mat类型 ...
- OpenCV中的矩阵乘法运算
转载:http://blog.csdn.net/tangwei2014 OpenCV中矩阵乘法运算 1. Mat*Mat: 第一个矩阵的列数必须等于第二个矩阵的行数. [0, 1, 2, 3; ...
- OpenCV中Mat的详解
每次碰到Mat都得反复查具体的用法,网上的基础讲解不多,难得看到一篇,赶快转来收藏~ 原文地址:http://www.opencvchina.com/thread-1039-1-1.html 目标 我 ...
随机推荐
- MySQL 主从复制 (CentOS 7)
1.主从复制原理 (1) 当master 服务器上的数据发生改变时,则将其改变写入二进制日志文件中: (2) slave服务器会在一定时间间隔内对 master 服务器上的二进制日志进行探测,探测其是 ...
- 如何安装Vscode软件及设置成中文界面?
最新小编开始研究前端,想写点东东玩,要想开始首先就要安装工具,写前端有好几个工具,安装推荐开源的vscode,第一次安装是英文版的,如何修改成中文版,也是很简单的,跟随小编一起来安装设置工具吧. 方法 ...
- vxworks 开发环境搭建
育儿 分类: 嵌入式开发 VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实操作系统 windriv vxwork时操作系统(RTOS),它以其良好的可靠性和卓越的实 ...
- nvl(sum(字段),0) 的时候,能展示数据0,但是group by 下某个伪列的时候,查不到数据(转载)
今天碰到一个比较有疑惑的问题,就是在统计和的时候,我们往往有时候查不到数据,都会再加个 nvl(sum(字段),0) 来显示这个字段,但是如果我们再加个group by ,就算有加入这个 nvl(nu ...
- 强大的unique
强大的unique 两道红题为例眼熟一下unique P1138 第k小整数 题解 这里用到了STL的去重函数哦 unique 首先你有一个待处理的数组 a[n] 一定要先排序鸭 sort( a+1 ...
- Vue -3:单文件组件
在很多 Vue 项目中,我们使用 Vue.component 来定义全局组件,紧接着用 new Vue({ el: '#container '}) 在每个页面内指定一个容器元素. 这种方式在很多中小规 ...
- [转]springboot启动原理
参考文章:https://www.jianshu.com/p/ef6f0c0de38f
- 设置placeholder 颜色
::-webkit-input-placeholder { /* WebKit browsers */ color: rgb(100, 193, 173); } :-moz-placeholder { ...
- Linux - 搭建Web项目(Django + nginx + uwsgi)
工作中碰到需要使用Django + nginx + uwsgi 搭建项目环境 1. 搭建基本环境 需要有python环境,不多做说明 需要安装nginx,不多做说明 需要安装uwsgi: yum in ...
- 八十三:redis之redis的使用场景和安装
使用场景1.登录会话存储,存储在redis中,与mamcached相比,数据不会丢失2.排行榜.计数器:比如一些秀场类的项目,经常会有一些前多少名的主播排行榜,还有一些文章阅读量.或者点赞数等3.作为 ...