Mat类的创建:

方法一:

通过读入一张图像,直接转换为Mat对象

Mat image = imread("test.jpg");

其中 imread()方法需要传入String类型的值,一般都是图像文件路径。

方法二:

使用无参数构造函数,创建Mat对象

Mat image = Mat();

image.create(4, 4, CV_8UC3);

此刻表示创建一个4x4大小的像素块,每个像素都是三通道每个通道的位数都是8位,一个字节的。上述CV_8UC3中的8表示8位、UC表示uchar类型、3表示三个通道。

方法三:

使用行、列、类型带这个三个参数的构造函数创建Mat对象

Mat m = Mat(4, 4, CV_8UC3)

表示创建一个跟方法二一样的像素块

方法四:

使用行、列、类型、Scalar向量四个参数的构造函数创建Mat对象

Mat m = Mat(4, 4, CV_8UC3, Scalar(0, 255, 255);

同样表示创建一个4x4的像素块,唯一不一样的是颜色不是默认值而是我们指定的三通道颜色值向量Scalar(0, 255, 255)。其中Scalar向量数目永远是等于通道数目

方法五:

使用大小、类型两个参数的构造函数创建Mat对象

Mat m = Mat(Size(4, 4), CV_8UC3);

同样创建一个4x4的每个通道8位三个通道的像素块

方法六:

使用大小、类型、Scalar向量三个参数的构造函数创建Mat对象

Mat m = Mat(Size(4, 4), CV_8UC3, Scalar(255, 0, 0));

同样创建一个4x4的每个通道8位三个通道的像素块

方法七:

使用Mat::zeros函数实现,两个参数一个是Size表示图像宽与高

另外一个表示类型:

Mat m = Mat::zeros(Size(4,4), CV_8UC3);

同样创建一个4x4的每个通道8位三个通道的像素块

方法八:

使用Mat::ones函数实现,两个参数一个是Size表示图像宽与高,

另外一个表示类型

Mat m = Mat::ones(Size(4,4), CV_8UC1);

同样创建一个4x4的每个通道8位一个通道的像素块

注意这次类型是CV_8UC1表示创建的是一个通道类型数据。

 Mat类的复制:

方法一:

Mat m2;

Mat m1 = imread("test.jpg");

m2 = m1;

方法二:

Mat m1 = imread("test.jpg");

Mat m2(m1);

通过上述两种方法Mat对象只会复制头部分和指向像素数据的指针,不会真正复制数据部分。通过如下方法Mat可以实现数据对象的完全复制

方法三:

Mat src = imread("test.jpg");

Mat dst = src.clone();

方法四:

Mat src = imread("test.jpg");

Mat dst;

src.copyTo(dst);

OpenCV——Mat类的创建、复制、函数的更多相关文章

  1. [OpenCV]Mat类详解

    http://blog.csdn.net/yang_xian521/article/details/7107786 Preface Mat:Matrix Mat类可以被看做是opencv中C++版本的 ...

  2. OPENCV mat类

    OpenCV参考手册之Mat类详解 目标 我们有多种方法可以获得从现实世界的数字图像:数码相机.扫描仪.计算机体层摄影或磁共振成像就是其中的几种.在每种情况下我们(人类)看到了什么是图像.但是,转换图 ...

  3. 图像识别与OpenCV——Mat类与Mat_类的内存管理

    Mat_类是对Mat类的一个包装,其定义如下: template<typename _Tp> class Mat_ : public Mat { public: //只定义了几个方法 // ...

  4. opencv学习之路(4)、Mat类介绍,基本绘图函数

    一.Mat类创建 Mat img;//创建无初始化矩阵 Mat img1(,,CV_8UC1);//200行,100列(长200,宽100) Mat img2(Size(,),CV_8UC3,Scal ...

  5. OpenCV 之 Mat 类

    以前看 OpenCV 的书,或者资料也好,遇到 Mat 类的介绍,一般都是匆匆带过,自以为已经很熟悉了,从来没有深入研究过. 结果前段时间面试了一家公司,被问到两个 Mat 的问题:一是,谈谈对 Ma ...

  6. opencv中mat类介绍

    The class Mat represents an n-dimensional dense numerical single-channel or multi-channel array. It ...

  7. opencv使用日记之一:平台搭建Mat类以及图像的读取修改

    平台搭建就摸了一整天时间,真的是...不说了,最后我选择的是 opencv3.0(2015/06/04)  + win7 + vs2012   注意opencv的版本不同导入的库文件是不一样的,所以请 ...

  8. OpenCV之Mat类使用总结

    #前言 Mat 是Opencv中很常用的一个图像容器类,图像在计算机中的存储形式是二进制字节流,其本质的存储形式如下图所示: 而一张图片是由很多像素点组成,单个像素点又会因为图像格式的不同而不同.例如 ...

  9. php简单实用的操作文件工具类(创建、移动、复制、删除)

    php简单实用好用的文件及文件夹复制函数和工具类(创建.移动.复制.删除) function recurse_copy($src,$dst) {  // 原目录,复制到的目录 $dir = opend ...

随机推荐

  1. EF框架的三种模式

    Database First就是先建数据库或使用已有的数据库.然后在vs中添加ADO.Net实体数据模型,设置连接并且选择需要的数据库和表.它是以数据库设计为基础的,并根据数据库自动生成实体数据模型, ...

  2. Code Signal_练习题_extractEachKth

    Given array of integers, remove each kth element from it. Example For inputArray = [1, 2, 3, 4, 5, 6 ...

  3. vue+webpack+vue-cli+WebStrom 项目搭建

    作者QQ:1095737364    QQ群:123300273     欢迎加入!   1.安装 webpack 和vue-cli 模块: npm install webpack -g npm in ...

  4. MySQL入门详解(一)---mysql的语言

    MySQL语言分为:DCL(数据库控制语言).DDL(数据库定义语言).DQL(数据库查询语言).DML(数据库操作语言),这一节我们先从mysql的语言开始. DCL:数据库控制语言,用来设置数据库 ...

  5. cf900D. Unusual Sequences(容斥 莫比乌斯反演)

    题意 题目链接 Sol 首先若y % x不为0则答案为0 否则,问题可以转化为,有多少个数列满足和为y/x,且整个序列的gcd=1 考虑容斥,设\(g[i]\)表示满足和为\(i\)的序列的方案数,显 ...

  6. drupal常用api

    最短的函数 // 语言字串,除了可以获取对应语言外,还可以设置字串变量.可以是!var, @var或 %var,%var就添加元素外层.@var会过滤HTML,!var会原样输出HTML,%var会添 ...

  7. AngularJS学习 之 UI以及逻辑生成

    学习<Angular高级编程>理解如下 要求: 创建如下界面,有导航栏,一个Watchlists面板,面板上有个加号button,一句说明“”Use+to create a list“” ...

  8. Android GetMethodID 函数的说明

    GetFieldID是得到java类中的参数ID,GetMethodID得到java类中方法的ID,它们只能调用类中声明为 public的参数或方法.使用如下: jfieldID topicField ...

  9. python 实现int函数

    拖了这么久,最终还是战胜了懒惰,打开电脑写了这篇博客,内容也很简单,python实现字符串转整型的int方法 python已经实现了int方法,我们为什么还要再写一遍,直接用不就好了?事实确实如此,但 ...

  10. java io详解(1)

    一.java io结构图 二.java io的开始:文件 三.字节流: 一.java io结构图 流分类: 1.Java的字节流    InputStream是所有字节输入流的祖先,而OutputSt ...