博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cv::Mat 结构
阅读量:7182 次
发布时间:2019-06-29

本文共 1877 字,大约阅读时间需要 6 分钟。

hot3.png

  • data:Mat对象中的一个指针,指向内存中存放矩阵数据的一块内存 (uchar*data)
  • dims:Mat所代表的矩阵的维度,如 3 * 4 的矩阵为 2 维, 3 * 4 * 5的为3维
  • channels:通道,矩阵中的每一个矩阵元素拥有的值的个数,比如说 3 * 4矩阵中一共 12 个元素,如果每个元素有三个值,那么就说这个矩阵是 3 通道的,即 channels =3。常见的是一张彩色图片有红、绿、蓝三个通道。
  • depth:深度,即每一个像素的位数(bits),在opencv的Mat.depth()中得到的是一个 0 – 6的数字,分别代表不同的位数:enum { CV_8U=0, CV_8S=1, CV_16U=2, CV_16S=3,CV_32S=4, CV_32F=5, CV_64F=6 }; 可见 0和1都代表8位,2和3都代表16位,4和5代表32位,6代表64位;
  • step:是一个数组,定义了矩阵的布局,具体见下面图片分析,另外注意 step1(step / elemSize1),M.step[m-1] 总是等于 elemSize,M.step1(m-1)总是等于channels;
  • elemSize : 矩阵中每一个元素的数据大小,如果Mat中的数据的数据类型是CV_8U 那么 elemSize = 1,CV_8UC3 那么 elemSize = 3,CV_16UC2 那么 elemSize= 4;记住另外有个 elemSize1 表示的是矩阵中数据类型的大小,即 elemSize / channels的大小

     type–数组的类型。使用 CV_8UC1,……,创建 1-4 通道的矩阵,CV_64FC4 或CV_8UC(n),… …,CV_64FC(n)可以创建多通道(高达CV_MAX_CN 通道)矩阵。s–一个可选的初始化每个矩阵元素的参数。要在矩阵建成后将所有元素设置为特定值可以用Mat的赋值运算符Mat:operator=(constScala&value)

 

获取与设置像素值的几个办法

 

/giantchen547792075/article/details/9107877  opencv2中的部分函数

经过的Mat中的一些函数的使用:

Mat src = imread( "qiqiu.jpg", 1 );

Mat中的数据清零:src.setTo(Scalar(0));

 

Mat::push_back(Mat);在原来的Mat的最后一行后再加几行

Mat::pop_back(size_t nelems=1);//移出最下面几行

 

bool Mat::empty()如果没有元素返回1,即Mat::total()==0或者Mat::data==NULL

uchar *Mat::ptr(int i=0)指向第i行

 

reduce(I,dst,int dim,int reduceOp,int dtype=-1);//可以统计每行或每列的最大、最小、平均值、和

reduce参数介绍:

 Reduce简化一个矩阵成为一个向量 

cvReduce( const CvArr* src, CvArr* dst, int dim, int op=CV_REDUCE_SUM);
src 
输入矩阵 
dst 
输出的通过处理输入矩阵的所有行/列而得到的单行/列向量 
dim 
矩阵被简化后的维数索引.0意味着矩阵被处理成一行,1意味着矩阵被处理成为一列,-1时维数将根据输出向量的大小自动选择. 
op 
简化操作的方式,可以有以下几种取值: 
CV_REDUCE_SUM-输出是矩阵的所有行/列的和. 
CV_REDUCE_AVG-输出是矩阵的所有行/列的平均向量. 
CV_REDUCE_MAX-输出是矩阵的所有行/列的最大值. 
CV_REDUCE_MIN-输出是矩阵的所有行/列的最小值.  

Mat初始化:

 

Mat kern = (Mat_
(3,3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);

 

以上为转载,原博客地址:http://blog.csdn.net/peng825223208/article/details/25715259     侵删

转载于:https://my.oschina.net/xolsenberg/blog/805652

你可能感兴趣的文章
写项目代码之前必须要做的事
查看>>
别装啦!一看就知道你要跳槽了.....
查看>>
java B2B2C Springcloud电子商城系统-Spring Cloud常见问题与总结(四)
查看>>
2017双11技术揭秘—阿里巴巴数据库技术架构演进
查看>>
聊聊字典编码
查看>>
独家 | 史上最权威的BI 趋势分析及产品对比
查看>>
观点 | 云原生时代来袭 下一代云数据库技术将走向何方?
查看>>
互联网分布式微服务云平台规划分析--SSO单点登录系统
查看>>
经典以太坊是什么
查看>>
SpringCloud之高可用的分布式配置中心(Spring Cloud Config)(七)
查看>>
h5实现微信扫码
查看>>
curl: (6) Couldn't resolve host 'www.ttlsa.com'
查看>>
JS闭包问题
查看>>
Linux下卸载文件系统
查看>>
我的友情链接
查看>>
文件名过长/文件夹路径过长 无法删除文件夹之解决办法
查看>>
Js获取当前页面URL的一些属性_已迁移
查看>>
test
查看>>
Android消息通知Totast的实现
查看>>
如何更好的管理企业内的打印机
查看>>