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类型 ...
随机推荐
- mybatis-ResultMappingResolver类信息
ResultMappingResolver类介绍 一个ResultMap元素对应一个ResultMap对象 resultMap元素中的idArg/result/association/collecti ...
- javascript void函数
<a href="javascript:doTest2();void(0);">here</a> 但这儿的void(0)究竟是何含义呢? Javascrip ...
- application Initialization设置导致处理程序ExtensionlessUrlHandler-Integrated-4.0在其模块列表中有一个错误模块问题的解决
HTTP 错误 500.21 - Internal Server Error 处理程序“ExtensionlessUrlHandler-Integrated-4.0”在其模块列表中有一个错误模块“Ma ...
- 软件测试职业规划的思考(转)(作者Findyou
前言 入软件测试行至今已经8年多,承领导们的信任与重用,同事的支持与信任,我的职业发展算是相对较好,从入行到各类测试技术岗位,再到测试总监,每一步都刚刚好.最近在自身职业发展瓶颈,人生十字路口,静坐反 ...
- OO第一次课程总结分析
作为一个之前从未使用过java语言,主攻面向过程式编程的“面向对象”小白,于是乎从第一次作业开始时利用时间疯狂学习java语言,经过三次作业的残酷洗礼,自己对面向对象式编程多多少少有了初步的了解(前路 ...
- iconfont.cn批量加入
iconfont.cn还没有一个批量加入的功能 以下是最新的图标批量加入购物车功能代码. var icons = document.querySelectorAll('.icon-gouwuche1' ...
- Azulão--青鸟--IPA--巴西葡萄牙语
这是巴西很有名的民谣.
- DevExpress v18.1新版亮点——Analytics Dashboard篇(一)
用户界面套包DevExpress v18.1日前正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress Analytics Dashboard v18.1 的新功能,快 ...
- Android开发---网格布局案例
Android开发---网格布局案例 效果图: 1.MainActivity.java package com.example.android_activity; import android.ap ...
- shiro学习(二)身份验证
身份验证,即在应用中谁能证明他就是他本人.一般提供如他们的身份ID一些标识信息来表明他就是他本人,如提供身份证,用户名/密码来证明. 在shiro中,用户需要提供principals (身份)和cre ...