目录

1、使用Mat()构造函数

2、C\C++中构造函数进行初始化

3、为已经存在的IplImage指针创建信息头

4、利用Create()函数

5、Matlab方式的初始化

6、对小矩阵使用逗号分隔式初始化函数

7、为已经存在的对象穿件新信息头


Mat不但是一个非常有用的图像容器类,同时也是一个通用聚矩阵类。创建一个Mat对象有很多种方法,列举如下:


1、使用Mat()构造函数

师范代码如下:

# include <opencv2/opencv.hpp>
# include <iostream>using namespace cv;
using namespace std;void main(){Mat M(2, 2, CV_8UC3, Scalar(0, 0, 255));  //Mat()构造函数创建mat类cout << "M= " << " " << M << endl;
}

上述代码运行结果为:

对于二维多通道图像,需要制定的参数:(1)尺寸,即行数和列数,上述代码是:(2,2);(2)存储元素的数据类型以及每个矩阵点的通道数,上述代码是:CV_8UC3(表示使用8位的unsigned char类型,每个像素由三个元素组成三通道);(3)Scalar是个short型向量,可以用来初始化矩阵来表示颜色


2、C\C++中构造函数进行初始化

代码如下:

  int sz[3] = { 2, 2, 2 };Mat L(3, sz, CV_8UC, Scalar::all(0));

上述例子创建了一个超过两维的矩阵,需要的参数:(1)指定维数;(2)传递一个指向一个数组的指针,这里是:sz,数组元素代表每个维度的尺寸。(3)后续就是指定类型和初始值,和方法1相同。


3、为已经存在的IplImage指针创建信息头

代码如下:

 IplImage* img = cvLoadImage("1.jpg", 1);Mat mtx(img);  //转换IplImage*->Mat

上述代码是将IplImage 转换为Mat,在OpenCV3.0版本是不适用的,在3.0版本应该是:

 IplImage* img = cvLoadImage("1.jpg", 1);Mat mat = cvarrToMat(img);  //转换IplImage*->Mat

4、利用Create()函数

利用Mat类中的Create()成员ha你数进行Mat类的初始化操作,此种方法不能为矩阵设置初始值,只是在改变尺寸时重新为矩阵数据开辟内存而已。

代码如下:

M.create(4, 4, CV_8UC(2));
cout << "M= " << " " << M << endl<<endl;

运行结果为:


5、Matlab方式的初始化

Matlab形式的初始化方式:zeros()、ones()、eyes()。

代码如下:

Mat E = Mat::eye(4, 4, CV_64F);
cout << "E= " << endl << " " << E << endl << endl;Mat X = Mat::ones(2, 2, CV_32F);
cout << "X= " << endl << " " << X << endl << endl;Mat Z = Mat::zeros(3, 3, CV_8UC1);
cout << "Z= " << endl << " " << Z << endl << endl;

运行结果为:


6、对小矩阵使用逗号分隔式初始化函数

代码如下:

Mat C = (Mat_<double>(3, 3)<<0,-1,0,-1,5,-1,0,-1,0);
cout << "C= " << endl << " " << C << endl << endl;


7、为已经存在的对象穿件新信息头

使用clone()或者copyTo()为一个已经存在的Mat对象创建一个新的信息头,代码如下:

Mat RowClone = C.row(1).clone();
cout << "RowClone= " << endl << " " << RowClone << endl << endl;

运行结果如下:

【OpenCV】OpenCV实战从入门到精通之 -- 显示创建Mat对象的七种方法相关推荐

  1. Opencv显示创建Mat对象的七种方式

    方式一: [cpp] view plain copy #include<iostream> #include<opencv2/opencv.hpp> using namespa ...

  2. 【Python】Python实战从入门到精通之二 -- 教你使用Python中列表操作

    本文是Python实战–从入门到精通系列的第二篇文章: [Python]Python实战从入门到精通之一 – 教你深入理解Python中的变量和数据类型 Python实战从入门到精通之二 – 教你使用 ...

  3. OpenCV 笔记(06)— Mat 结构、像素值存储方法、创建 Mat 对象各种方法、Mat 对象的运算

    数字图像中的每个点都称为像素(对于图像元素),并且每个像素可以存储一个或多个值,这取决于它是否是仅存储一个值的黑白图像(也称为二进制图像,比如只存储0或1),还是存储两个值的灰度图像,或者是存储三个值 ...

  4. Nginx/Openresty日志时间显示到毫秒级的三种方法(不改源码)

    Nginx/Openresty日志时间显示到毫秒级的三种方法(不改源码) 方法一 :set (只能在server节点内) 方法二: set_by_lua (只能在server节点内) 方法三: map ...

  5. Web 之 html 如何显示隐藏Html元素的两种方法简单整理

    Web 之 html 如何显示隐藏Html元素的两种方法简单整理 目录 Web 之 html 如何显示隐藏Html元素的两种方法简单整理 一.简单介绍 二.实现原理 三.注意事项 四.代码示例 一.简 ...

  6. Unity UGUI 效果 之 UI 元素 多边形UI (例如雷达图,圆形,不规则多边形 UI等)显示 的简单实现的几种方法整理

    Unity UGUI 效果 之 UI 元素 多边形UI (例如雷达图,圆形,不规则多边形 UI等)显示 的简单实现的几种方法整理 目录 Unity UGUI 效果 之 UI 元素 多边形UI (例如雷 ...

  7. 【OpenCV】OpenCV实战从入门到精通之 -- 输入输出XML和YAML文件详解

    1.XML和YAML文件简介 XML文件是一种元标记语言,即开发者可以根据自身需要定义自己的标记.它是一种语义和结构语言,描述了文档的语义和结构. YAML以数据为中心,是一个可读性高,用来表达资料序 ...

  8. 【OpenCV】OpenCV实战从入门到精通之 -- 访问图像中的像素

    目录 1.图像在内存之中的存储方式 2.颜色空间缩减 3.LUT函数:Look up table操作 4.计时函数 5.访问图像中像素的三类方法 5.1.指针访问像素 5.2.迭代器操作像素 5.3. ...

  9. 【OpenCV】OpenCV实战从入门到精通之 -- 指针访问、迭代器iterator、动态地址计算配合at元素

    目录 1.指针访问像素 2.迭代器操作像素 3.动态地址计算 OpenCV中,有三种方式访问图像像素: 指针访问:C操作符[]: 迭代器iterator 动态地址计算 上述方法在访问速度上略有差异.d ...

最新文章

  1. java 函数式编程_函数式编程杂谈
  2. groovy怎样从sql语句中截取表名_SQL常用的基础查询语句
  3. 用户第一次登录后要求修改密码
  4. 《Java程序员职场全攻略:从小工到专家》连载十二:大家都是个什么身价
  5. SpringBoot微服务 b2b2c 多用户商城系统(八)springboot整合mongodb
  6. 1470. Shuffle the Array
  7. EF架构~LinqToEntity里实现left join的一对一与一对多
  8. 建筑建模学习笔记2——3DMax房屋框架建模
  9. 蓝桥杯 ALGO-74 算法训练 连接字符串
  10. matlab repmat_三行MATLAB实现动漫风格照片
  11. Vue中用到jeDate日期控件,Vue对象中的值滞后,总是滞后当前选择的值
  12. Python-实现(整蛊)消息批量发送
  13. gyp ERR! stack Error: EACCES: permission denied,解决
  14. P1_M4_L5 Lateral Dynamic Bicycle Model(自行车模型的横向动力学建模)
  15. 海康威视 + 搭配内网穿透,搭建远程视频监控教程
  16. Matlab常用图像处理命令108例(二)
  17. 名帖301 刘墉 行书《自作诗卷》
  18. 达人评测 酷睿i7 1195g7和i7 1260p对比选哪个
  19. 解决 SharePoint 2013 管理中心登录问题。
  20. ug908 Programming and Debugging

热门文章

  1. 管壁式换热器cad图纸_民勤图纸管板加工加工
  2. 客服端与服务器之间传输信息,QT实现客服端和服务器之间消息和文件交互
  3. php实现凯撒密码加密算法,Python实现的凯撒密码算法示例
  4. client netty 主动发数据_Netty服务器无限循环给客户端发送数据
  5. springboot整合flowable(mysql)第一节
  6. python中event的用法_Python编程之event对象的用法实例分析
  7. mysql查询表的列名主键_Oracle中查看所有的表,用户表,列名,主键,外键
  8. 小学音乐教学和计算机的融合,小学学科教学与计算机深度融合赛课心得体会(共4篇)...
  9. 微型计算机中 i o接口位于6,北语15秋计算机基础作业1
  10. python装饰器系列(五)