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 目标 我 ...
随机推荐
- Vue+elementUI+springboot+mybatis demo教程(二)
安装配置node.js安装vue并搭建前台项目前台项目引入elementUI前台项目引入axios本篇主要记录前台项目搭建之前的环境准备,首先要安装node.js(node官网),进行相关配置等. 安 ...
- git下载fastadmin
mac git下载后,环境配置运行会如下图 一 下载相对应系统的node.js https://nodejs.org/en/download/ 安装就是一直下一步.... 二 指令终端.cd 到对应项 ...
- JDBC——DBHelper代码模版
JDBC数据库操作代码模版 package com.oolong.util; import java.sql.Connection; import java.sql.DriverManager; im ...
- leetcode探索中级算法
leetcode探索中级答案汇总: https://leetcode-cn.com/explore/interview/card/top-interview-questions-medium/ 1)数 ...
- Linux命令之文件和目录操作命令(一)—— ls
本文介绍了ls命令的最常用法. 1.用法: ls [选项][目录名或文件名] 2.选项: -l 使用长格式显示目录或文件的详细信息 -a 显示隐藏文件 -h 人性化显示文件或目录的大小 -d 显示目录 ...
- SVN服务器的安装
运行VisualSVN-Server-2.7.3.msi程序, 如下图 点击Next, 下一步 选中 I accept选项, 点击Next, 下一步 选择默认配置, 服务和控制台组件方式, 点击Nex ...
- vue-template-compiler作用
vue-template-compiler的作用是什么: 看起来 template-compiler是给parse函数使用的, 那么parse函数是干什么的呢 先看一下parse的结果: 结论:使用v ...
- ios8唤不起APP的问题
https://stackoverflow.com/questions/27526966/ios-8-window-location-href-doesnt-work-with-url-scheme ...
- 微信小程序页面左右滑动事件
微信小程序提供了页面的上下滚动的事件,在页面的js文件中, page({ onPageScroll(e) { console.log(e.scrollTop) } }) 但是不是滑动事件,滑动事件需要 ...
- ubuntu 16.04 关闭开启图形界面
说明案例:ubuntu16.04 关闭图形界面命令: systemctl disable lightdm.service 开启图形界面命令: ln -s /lib/systemd/system/lig ...