opencv中mat类介绍
The class Mat represents an n-dimensional dense numerical single-channel or multi-channel array. It can be used to store (Mat类的对象用于表示一个多维度的单通道或者多通道稠密数组,它可以用来存储以下东西)
| 
 real or complex-valued vectors or matrices  | 
 实数值或复合值向量、矩阵)  | 
| 
 (grayscale or color images  | 
 (灰度图或者彩色图)  | 
| 
 voxel volumes  | 
 (立体元素)  | 
| 
 vector fields  | 
 (矢量场)  | 
| 
 point clouds  | 
 (点云)  | 
| 
 tensors  | 
 (张量)  | 
| 
 histograms (though, very high-dimensional histograms may be better stored in a SparseMat )  | 
 直方图,高纬度的最好存放在SparseMat  | 
Opencv中mat类是核心类,用于存储图像信息,主要包括两部分,矩阵头信息和矩阵的数据信息。头信息固定大小,数据信息极大。Mat类的对象进行赋值和拷贝构造时仅仅生成头信息的备份和数据指针
cv::Mat a ;//创建矩阵头
2 a = cv::imread("xxx.jpg");//读入图像
3 cv::Mat b = a ;//复制
b和a指向同一个矩阵,增加的时引用计数
若要实现实际上的独立赋值,需要使用mat的clone()和copyTo()函数
cv::Mat c = a.clone();
2 cv::Mat d ;
3 c.copyTo(d);
mat的常用属性
data
  uchar型的指针。Mat类分为了两个部分:矩阵头和指向矩阵数据部分的指针,data就是指向矩阵数据的指针。
dims
  矩阵的维度,例如5*6矩阵是二维矩阵,则dims=2,三维矩阵dims=3.
rows
  矩阵的行数
cols
  矩阵的列数
size
  矩阵的大小,size(cols,rows),如果矩阵的维数大于2,则是size(-1,-1)
channels
  矩阵元素拥有的通道数。例如常见的彩色图像,每一个像素由RGB三部分组成,则channels = 3。
type
  表示了矩阵中元素的类型以及矩阵的通道个数,它是一系列的预定义的常量,其命名规则为CV_(位数)+(数据类型)+C(通道数)。具体的有以下值:
| 
 CV_8UC1  | 
 CV_8UC2  | 
 CV_8UC3  | 
 CV_8UC4  | 
| 
 CV_8SC1  | 
 CV_8SC2  | 
 CV_8SC3  | 
 CV_8SC4  | 
| 
 CV_16UC1  | 
 CV_16UC2  | 
 CV_16UC3  | 
 CV_16UC4  | 
| 
 CV_16SC1  | 
 CV_16SC2  | 
 CV_16SC3  | 
 CV_16SC4  | 
| 
 CV_32SC1  | 
 CV_32SC2  | 
 CV_32SC3  | 
 CV_32SC4  | 
| 
 CV_32FC1  | 
 CV_32FC2  | 
 CV_32FC3  | 
 CV_32FC4  | 
| 
 CV_64FC1  | 
 CV_64FC2  | 
 CV_64FC3  | 
 CV_64FC4  | 
  这里U(unsigned integer)表示的是无符号整数,S(signed integer)是有符号整数,F(float)是浮点数。
  例如:CV_16UC2,表示的是元素类型是一个16位的无符号整数,通道为2. C1,C2,C3,C4则表示通道是1,2,3,4
    type一般是在创建Mat对象时设定,如果要取得Mat的元素类型,则无需使用type,使用下面的depth
depth
  矩阵中元素的一个通道的数据类型。这个值和type是相关的。例如 type为 CV_16SC2,一个2通道的16位的有符号整数。那么,depth则是CV_16S。depth也是一系列的预定义值,将type的预定义值去掉通道信息就是depth值:
  CV_8U CV_8S CV_16U CV_16S CV_32S CV_32F CV_64F
elemSize
  矩阵一个元素占用的字节数,例如:type是CV_16SC3,那么elemSize = 3 * 16 / 8 = 6 bytes
elemSize1
  矩阵元素一个通道占用的字节数,例如:type是CV_16CS3,那么elemSize1 = 16 / 8 = 2 bytes = elemSize / channels
opencv中mat类介绍的更多相关文章
- 【视频开发】OpenCV中Mat,图像二维指针和CxImage类的转换
		
在做图像处理中,常用的函数接口有OpenCV中的Mat图像类,有时候需要直接用二维指针开辟内存直接存储图像数据,有时候需要用到CxImage类存储图像.本文主要是总结下这三类存储方式之间的图像数据的转 ...
 - Opencv中Mat矩阵相乘——点乘、dot、mul运算详解
		
Opencv中Mat矩阵相乘——点乘.dot.mul运算详解 2016年09月02日 00:00:36 -牧野- 阅读数:59593 标签: Opencv矩阵相乘点乘dotmul 更多 个人分类: O ...
 - OpenCV中Mat的属性
		
OpenCV中Mat的属性 最近在做一OpenCV的图像轮廓检验,但当用到霍夫变换时才发现对Mat的属性了解不足.Mat在OpenCV中的地位是及其重要的,因此有必要做一个总结. 大体上来说,Mat是 ...
 - OpenCV中Mat的基本用法:创建、复制
		
OpenCV中Mat的基本用法:创建.复制 一.Mat类的创建: 1.方法一: 通过读入一张图像,直接将其转换成Mat对象. Mat image = imread("test.jpg&quo ...
 - OpenCV中Mat的列向量归一化
		
OpenCV中Mat的列向量归一化 http://blog.csdn.net/shaoxiaohu1/article/details/8287528 OpenCV中Mat的列向量归一化 标签: Ope ...
 - OpenCV中Mat操作clone() 与copyto()的区别
		
OpenCV中Mat操作clone() 与copyto()的区别 // Mat is basically a class with two data parts: the matrix header ...
 - opencv学习之路(4)、Mat类介绍,基本绘图函数
		
一.Mat类创建 Mat img;//创建无初始化矩阵 Mat img1(,,CV_8UC1);//200行,100列(长200,宽100) Mat img2(Size(,),CV_8UC3,Scal ...
 - opencv关于Mat类中的Scalar()---颜色赋值
		
这个 CvScalar就是一个可以用来存放4个double数值的数组(O'Reilly的书上写的是4个整型成员):一般用来存放像素值(不一定是灰度值哦)的,最多可以存放4个通道的. typedef s ...
 - opencv中Mat与IplImage,CVMat类型之间转换
		
opencv中对图像的处理是最基本的操作,一般的图像类型为IplImage类型,但是当我们对图像进行处理的时候,多数都是对像素矩阵进行处理,所以这三个类型之间的转换会对我们的工作带来便利. Mat类型 ...
 
随机推荐
- spring boot 入门 使用spring.profiles.active来分区配置
			
很多时候,我们项目在开发环境和生成环境的环境配置是不一样的,例如,数据库配置,在开发的时候,我们一般用测试数据库,而在生产环境的时候,我们是用正式的数据,这时候,我们可以利用profile在不同的环境 ...
 - Linux c++ time different
			
下面这个函数可以得到微秒级别: #include<time.h> int clock_gettime(clockid_t clk_id,struct timespec *tp); 函数&q ...
 - POJ 3436 ACM Computer Factory 最大流,拆点 难度:1
			
题目 http://poj.org/problem?id=3436 题意 有一条生产线,生产的产品共有p个(p<=10)零件,生产线上共有n台(n<=50)机器,每台机器可以每小时加工Qi ...
 - java①
			
1.MyEclipse Eclipse Idea 等 都是 开发java的IDE工具! 2.面试题: JDK: java开发工具包!(Java Development TooKit)! 是整个java ...
 - xshell提示必须安装最新的更新
			
今天大家的xshell基本都出了这个问题 调整时间,调整到比较前的时间,打开xshell即可. 然后工具->选项 把更新去了
 - RabbitMQ Dead Lettering(死信)
			
死信,顾名思义,就是死掉的消息,死掉的消息是会被一般的队列丢弃的.如果这些消息很重要,而我们又需要,怎么办?凡事都有一个退路,现在就有一种方法可将这些死信消息存下来,那就是DLX(Dead Lette ...
 - SQL3-查找各个部门当前(to_date='9999-01-01')领导当前薪水详情以及其对应部门编号dept_no
			
题目描述 查找各个部门当前(to_date='9999-01-01')领导当前薪水详情以及其对应部门编号dept_noCREATE TABLE `dept_manager` (`dept_no` ch ...
 - MATLAB中mexFunction函数的接口规范(转)
			
reference:https://www.cnblogs.com/haoyul/p/5606720.html https://www.cnblogs.com/zeakey/p/3984733.htm ...
 - IIC协议解释(转)
			
IIC协议解释 推荐资源: http://m.elecfans.com/article/574049.html and https://blog.csdn.net/firefl ...
 - DevExpress WinForms v18.2新版亮点(四)
			
行业领先的.NET界面控件2018年第二次重大更新——DevExpress v18.2日前正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress WinForms v1 ...