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. Skype for Business

    Skype for Business提供在线会议.即时消息.视频会议等功能 一.界面介绍 1.登陆主界面,选择当前在线状态 2.添加联系人 在搜索框中输入想要寻找用户的姓名.电子邮件地址或电话号码-& ...

  2. FastDFS安装部署

    博主本人平和谦逊,热爱学习,读者阅读过程中发现错误的地方,请帮忙指出,感激不尽 服务器信息: Storage:192.168.247.20 Traker:192.168.247.21 一.搭建环境准备 ...

  3. Python接口自动化测试-下载文件

    #!/usr/bin/env python # -*- coding: utf-8 -*- # @Author : shenqiang ''' 注意:定义类的时候,内部方法之间的互调 步骤: 1.按照 ...

  4. iOS天气动画、高仿QQ菜单、放京东APP、高仿微信、推送消息等源码

    iOS精选源码 TYCyclePagerView iOS上的一个无限循环轮播图组件 iOS高仿微信完整项目源码 想要更简单的推送消息,看本文就对了 ScrollView嵌套ScrolloView解决方 ...

  5. 17)将index.php中的代码放到Framework中封装起来

    目录结构: 发生改动的类代码: 新增类:Framework.class.php <?php /** * Created by PhpStorm. * User: Interact * Date: ...

  6. OpenCV 霍夫线变换

    #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" #i ...

  7. 爬虫时伪装header信息

    在爬虫时,一般需要伪装Agent信息,放在header中 1.header不是必传参数,在需要的时候进行伪装 2.header = {"User-Agent": "Moz ...

  8. 概念--Maven仓库

    转:Maven:mirror和repository 区别 Tip: 默认中央仓库的地址:https://repo.maven.apache.org/maven2 1.Maven仓库主要有2种 remo ...

  9. R的基础数据结构

  10. 题解 P1951 【收费站_NOI导刊2009提高(2)】

    查看原题请戳这里 核心思路 题目让求最大费用的最小值,很显然这道题可以二分,于是我们可以二分花费的最大值. check函数 那么,我们该怎么写check函数呢? 我们可以删去费用大于mid的点以及与其 ...