OpenCVMat的基本用法:创建、复制

一、Mat类的创建:

1.方法一:

通过读入一张图像,直接将其转换成Mat对象。

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

 Mat image = imread("F:\\test.jpg");

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

注意:图像文件路径中需要两个“\”,要不然会报错。

2.方法二:

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

 Mat image = Mat();
image.create(, , CV_8UC3);//创建一个4x4大小的像素块,每个像素都是三通道每个通道的位数都是8位

上述CV_8UC3中的8表示8位,UC表示uchar类型,3表示三个通道。

3.方法三:

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

 Mat m = Mat(, , CV_8UC3); //创建一个4x4大小的像素块,每个像素都是三通道每个通道的位数都是8位

与方法二创建的像素块一样。

4.方法四:

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

 Mat m = Mat(, , CV_8UC3, Scalar(, , );
//创建一个4x4大小的像素块,每个像素都是三通道每个通道的位数都是8位,指定三通道颜色值向量Scalar(0, 255, 255)

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

5.方法五:

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

 Mat m = Mat(Size(, ), CV_8UC3); //创建一个4x4大小的像素块,每个像素都是三通道每个通道的位数都是8位

6.方法六:

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

 Mat m = Mat(Size(, ), CV_8UC3, Scalar(, , )); //创建一个4x4大小的像素块,每个像素都是三通道每个通道的位数都是8位

7.方法七:

使用Mat::zeros函数实现,两个参数的含义:Size表示图像宽与高,另外一个表示类型。

 Mat m = Mat::zeros(Size(,), CV_8UC3); //创建一个4x4大小的像素块,每个像素都是三通道每个通道的位数都是8位

8.方法八:

使用Mat::ones函数实现,两个参数的含义:Size表示图像宽与高,另外一个表示类型。

 Mat m = Mat::ones(Size(,), CV_8UC1); //创建一个4x4大小的像素块,每个像素都是三通道每个通道的位数都是8位

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

 二、Mat类的复制:

1.方法一:

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

2.方法二:

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

3.方法三:

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

4.方法四:

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

特别注意:方法一与方法二的Mat对象只会复制头部分和指向像素数据的指针,不会真正复制数据部分。方法三与方法四的Mat可以实现数据对象的完全复制。

OpenCV中Mat的基本用法:创建、复制的更多相关文章

  1. opencv中mat类介绍

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

  2. OpenCV中Mat操作clone() 与copyto()的区别

    OpenCV中Mat操作clone() 与copyto()的区别 // Mat is basically a class with two data parts: the matrix header ...

  3. OpenCV中Mat的列向量归一化

    OpenCV中Mat的列向量归一化 http://blog.csdn.net/shaoxiaohu1/article/details/8287528 OpenCV中Mat的列向量归一化 标签: Ope ...

  4. Opencv中Mat矩阵相乘——点乘、dot、mul运算详解

    Opencv中Mat矩阵相乘——点乘.dot.mul运算详解 2016年09月02日 00:00:36 -牧野- 阅读数:59593 标签: Opencv矩阵相乘点乘dotmul 更多 个人分类: O ...

  5. OpenCV中Mat的属性

    OpenCV中Mat的属性 最近在做一OpenCV的图像轮廓检验,但当用到霍夫变换时才发现对Mat的属性了解不足.Mat在OpenCV中的地位是及其重要的,因此有必要做一个总结. 大体上来说,Mat是 ...

  6. OpenCV中Mat的详解

    每次碰到Mat都得反复查具体的用法,网上的基础讲解不多,难得看到一篇,赶快转来收藏~ 原文地址:http://www.opencvchina.com/thread-1039-1-1.html 目标 我 ...

  7. opencv中Mat与IplImage,CVMat类型之间转换

    opencv中对图像的处理是最基本的操作,一般的图像类型为IplImage类型,但是当我们对图像进行处理的时候,多数都是对像素矩阵进行处理,所以这三个类型之间的转换会对我们的工作带来便利. Mat类型 ...

  8. opencv中Mat类型数据操作与遍历

    Mat作为opencv中一种数据类型常常用来存储图像,相对与以前的IplImgae类型来说,Mat类型省去了人工的对内存的分配与释放,转而自动分配释放.Mat Class主要包括两部个数据部分:一个是 ...

  9. OpenCV中Mat总结

    一.数字图像存储概述 数字图像存储时,我们存储的是图像每个像素点的数值,对应的是一个数字矩阵. 二.Mat的存储 1.OpenCV1基于C接口定义的图像存储格式IplImage*,直接暴露内存,如果忘 ...

随机推荐

  1. 火车进出栈 java

    题目描述 一列火车n节车厢,依次编号为1,2,3,…,n.每节车厢有两种运动方式,进栈与出栈,问n节车厢出栈的可能排列方式有多少种. 输入 一个数,n(n<=60000) 输出 一个数s表示n节 ...

  2. Amsterdam Distance

    题目描述 Your friend from Manhattan is visiting you in Amsterdam. Because she can only stay for a short ...

  3. java 的ConcurrentHashMap底层数据结构

    集合是编程中最常用的数据结构.而谈到并发,几乎总是离不开集合这类高级数据结构的支持.比如两个线程需要同时访问一个中间临界区(Queue),比如常会用缓存作为外部文件的副本(HashMap).这篇文章主 ...

  4. [LC] 108. Convert Sorted Array to Binary Search Tree

    Given an array where elements are sorted in ascending order, convert it to a height balanced BST. Fo ...

  5. 四剑客(sed)

    一. sed sed简介: 用Linux环境中的编辑器程序来编辑文本文件.这些编辑器可以让你用简单命令或鼠标单击来轻松地处理文本文件中的文本.但有时候,你会发现需要自动处理文本文件,可你又不想动用全副 ...

  6. cs231n spring 2017 lecture4 Introduction to Neural Networks

    1. Backpropagation:沿着computational graph利用链式法则求导.每个神经元有两个输入x.y,一个输出z,好多层这种神经元连接起来,这时候已知∂L/∂z,可以求出∂L/ ...

  7. JDK源码看Java域名解析

    前言 在互联网中通信需要借助 IP 地址来定位到主机,而 IP 地址由很多数字组成,对于人类来说记住某些组合数字很困难,于是,为了方便大家记住某地址而引入主机名和域名. 早期的网络中的机器数量很少,能 ...

  8. ionic2踩坑之自定义插件开发及调用

    关于ionic2自定义插件开发的文章,插件怎么调用的文章,好像网上都有,不过作为一个新手来说,从插件的开发到某个页面怎么调用,没有一个完整的过程的话,两篇没有关联的文章也容易看的迷糊.这里放到一起来方 ...

  9. TNS-04612: "orcl--117-118" 的 RHS 为空

    安装数据库时,TNS-04612: "orcl--117-118" 的 RHS 为空 解决办法: 把 D:\app\xxx\product\11.2.0\dbhome_1\NETW ...

  10. 红灯区:DevOps 建设的思考和实践

    点击关注"有赞coder" 获取更多技术干货哦- 作者:费解 团队:效能改进 背景 众所周知,在丰田精益生产中,核心观念包含对人的尊重.消除浪费.持续改善,只有这样,企业才能保持良 ...