cv::Mat结构

  • 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)

http://tmjfzy.blog.163.com/blog/static/66447025201261052543349/

http://ggicci.blog.163.com/blog/static/21036409620126157403724/opencv2获取与设置像素值的几个办法

http://blog.csdn.net/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_<char>(3,3) <<  0, -1,  0,
                               -1,  5, -1,
                                0, -1,  0);


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值