Mat 类简析

前言

  最近开始接触opencv,做了个简单的入门,经过各种的安装和编译,也算是初出茅庐,感受到计算机视觉的强大。这里很开森自己又要开始永无止境的前进啦!今天就记录下Mat类的用法。

一、

  Mat 类是一个用于保存图像数据或者矩阵数据的数据结构,可以说是一个矩阵类,在默认情况下其尺寸大小为0。当然也可以指定该对象的初始尺寸,例如:

1 Mat image(50, 100, Scalar(100));

其中前两个参数即为图像的长和宽,即50行,100列。Scalar即为像素点赋值,0即为全黑,255即为全白,其可以表示 4 元素向量,分别对应图像的 4 个通道,B、G、R、A,在 Opencv 中广泛用于传递像素值,是一种含 4 个 double 值的结构体类型:

1 typedef struct Scalar
2 {
3     double val[4];
4 }Scalar;

当然一般默认的话就是默认显示原图。

二、

  对图像进行操作分为载入、显示和输出。

  1、载入

1 Mat imread(const string& filename, intflags = 1);  //原型2 Mat srcImage = imread("图片路径", 2 | 4);  //载入无损的原图像3 Mat srcImage2 = imread("图像路径", 0);  //载入灰度图像4 Mat srcImage3 = imread("图像路径", 130);  //载入3通道的彩色图像

这里第二个参数是载入标识,指定一个加载图像的颜色类型。

》flags > 0 返回一个的彩色图像

》flags = 0 返回一个的灰度图像

》flags < 0 返回一个的包含alpha通道的加载图像

  2、显示

1 void imshow(const string& winname, InputArray mat);

》第一个参数:const string&类型的winname,显示窗口标题

》第二个参数:需要显示的图像

  创建窗口函数

1 void namedWindow(const string& winname, int falgs = WINDW_AUTOSISE);

》第一个参数:const string&类型的winname,显示窗口标题名称

》第二个参数:窗口标识

  3、输出到文件

1 bool imread(const string& filename, InputArray img, const vector<int>& params = vector<int>());

》第一个参数:const string&类型的filename,需要写入的文件名

》第二个参数:Mat类型的图像数据

》第三个参数:const vector<int>& 类型的一个 params,表示为特定格式保存的参数编码,一般保持默认就ok

这些就是Mat类的图像载入、显示和输出方法。方便以后查阅。

原文地址:https://www.cnblogs.com/shi-win-snoopy/p/12303494.html

时间: 2024-10-11 18:27:54

Mat 类简析的相关文章

SIFT特征原理简析(HELU版)

SIFT(Scale-Invariant Feature Transform)是一种具有尺度不变性和光照不变性的特征描述子,也同时是一套特征提取的理论,首次由D. G. Lowe于2004年以<Distinctive Image Features from Scale-Invariant Keypoints[J]>发表于IJCV中.开源算法库OpenCV中进行了实现.扩展和使用. 本文主要依据原始论文和网络上相关专业分析,对SIFT特征提取的算法流程进行简单分析.由于涉及到的知识概念较多,本人

JDK源码简析--java.lang包中的基础类库

题记 JDK,Java Development Kit. 我们必须先认识到,JDK只是,仅仅是一套Java基础类库而已,是Sun公司开发的基础类库,仅此而已,JDK本身和我们自行书写总结的类库,从技术含量来说,还是在一个层级上,它们都是需要被编译成字节码,在JRE中运行的,JDK编译后的结果就是jre/lib下得rt.jar,我们学习使用它的目的是加深对Java的理解,提高我们的Java编码水平. 本系列所有文章基于的JDK版本都是1.7.16. 本节内容 在本节中,简析java.lang包所包

Java Annotation 及几个常用开源项目注解原理简析

PDF 版: Java Annotation.pdf, PPT 版:Java Annotation.pptx, Keynote 版:Java Annotation.key 一.Annotation 示例 Override Annotation Java 1 2 3 @Override public void onCreate(Bundle savedInstanceState); Retrofit Annotation Java 1 2 3 @GET("/users/{username}&quo

.NET设计模式简析

首先,是设计模式的分类,我们知道,常用的设计模式共23种.但总体来说,设计模式氛围三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单列模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式. 行为型模式,共十一种:策略模式.模版方法模式.观察者模式.迭代子模式.责任链模式.命令模式.备忘录模式.转改模式.访问者模式.终结者模式.解释器模式. 另外还有并发型模式和线程池模式等. 介绍了分类,下面简单说下设计模式的六大原则

仿冒公检法手机诈骗简析

1 电话诈骗中的半壁江山: 仿冒公检法诈骗 电信诈骗,让人不胜其害.也让人不堪其扰,在受害者中有人倾家荡产,也有人家破人亡.2015年,全国电信诈骗发案59.9万起,被骗走222亿元,这两个数字触目惊心. 而根据腾讯移动安全/反诈骗实验室的数据显示电话诈骗损失中高达57.39%案件都是仿冒公检法诈骗,可以说仿冒公检法类是目前电话诈骗中最大的毒瘤. 2 仿冒公检法诈骗案情回顾 这个案例中诈骗骗子的诈骗套路分为以下几个步骤: 第一步:骗取信任. 骗子通过网络购买的受害者个人信息,例如身份证号.住址等

[转载] Thrift原理简析(JAVA)

转载自http://shift-alt-ctrl.iteye.com/blog/1987416 Apache Thrift是一个跨语言的服务框架,本质上为RPC,同时具有序列化.发序列化机制:当我们开发的service需要开放出去的时候,就会遇到跨语言调用的问题,JAVA语言开发了一个UserService用来提供获取用户信息的服务,如果服务消费端有PHP/Python/C++等,我们不可能为所有的语言都适配出相应的调用方式,有时候我们会很无奈的使用Http来作为访问协议;但是如果服务消费端不能

面向对象多态简析

C#&C++多态问题简析 在学习C#面向对象时,对封装和继承基本上还是理解的,但是碰到多态,基本上就是记住了个父类引用指向子类对象,在很长时间内也是一直比较困惑.学习c++时,基本上算是有了一定了解.下面结合代码解释多态问题 首先是c#代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Duo

JDK框架简析--java.lang包中的基础类库、基础数据类型

题记 JDK.Java Development Kit. 我们必须先认识到,JDK不过,不过一套Java基础类库而已,是Sun公司开发的基础类库,仅此而已,JDK本身和我们自行书写总结的类库,从技术含量来说.还是在一个层级上,它们都是须要被编译成字节码.在JRE中执行的,JDK编译后的结果就是jre/lib下的rt.jar,我们学习使用它的目的是加深对Java的理解,提高我们的Java编码水平. 本系列全部文章基于的JDK版本号都是1.7.16. 源代码下载地址:https://jdk7.jav

cgroup原理简析:进程调度

本篇来探究下cgroup对cpu的限制机制,前文提到过cgroup也是通过进程调度子系统来达到限制cpu的目的,因此需要了解下进程调度子系统. 因为是介绍cgroup的文章,因此只介绍进程调度中与cgroup密切关联的部分,详细完成的进程调度实现可参考进程调度的相关资料. 本文分为三个部分,首先介绍进程调度中的调度算法,在该基础上引入组调度,最后结合前面文章(cgroup原理简析:vfs文件系统)来说明上层通过echo pid >> tasks, echo n > cpu.shares等