OpenCV中Mat的基本用法:创建、复制
OpenCV中Mat的基本用法:创建、复制
一、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的基本用法:创建、复制的更多相关文章
- opencv中mat类介绍
The class Mat represents an n-dimensional dense numerical single-channel or multi-channel array. It ...
- OpenCV中Mat操作clone() 与copyto()的区别
OpenCV中Mat操作clone() 与copyto()的区别 // Mat is basically a class with two data parts: the matrix header ...
- OpenCV中Mat的列向量归一化
OpenCV中Mat的列向量归一化 http://blog.csdn.net/shaoxiaohu1/article/details/8287528 OpenCV中Mat的列向量归一化 标签: Ope ...
- Opencv中Mat矩阵相乘——点乘、dot、mul运算详解
Opencv中Mat矩阵相乘——点乘.dot.mul运算详解 2016年09月02日 00:00:36 -牧野- 阅读数:59593 标签: Opencv矩阵相乘点乘dotmul 更多 个人分类: O ...
- OpenCV中Mat的属性
OpenCV中Mat的属性 最近在做一OpenCV的图像轮廓检验,但当用到霍夫变换时才发现对Mat的属性了解不足.Mat在OpenCV中的地位是及其重要的,因此有必要做一个总结. 大体上来说,Mat是 ...
- OpenCV中Mat的详解
每次碰到Mat都得反复查具体的用法,网上的基础讲解不多,难得看到一篇,赶快转来收藏~ 原文地址:http://www.opencvchina.com/thread-1039-1-1.html 目标 我 ...
- opencv中Mat与IplImage,CVMat类型之间转换
opencv中对图像的处理是最基本的操作,一般的图像类型为IplImage类型,但是当我们对图像进行处理的时候,多数都是对像素矩阵进行处理,所以这三个类型之间的转换会对我们的工作带来便利. Mat类型 ...
- opencv中Mat类型数据操作与遍历
Mat作为opencv中一种数据类型常常用来存储图像,相对与以前的IplImgae类型来说,Mat类型省去了人工的对内存的分配与释放,转而自动分配释放.Mat Class主要包括两部个数据部分:一个是 ...
- OpenCV中Mat总结
一.数字图像存储概述 数字图像存储时,我们存储的是图像每个像素点的数值,对应的是一个数字矩阵. 二.Mat的存储 1.OpenCV1基于C接口定义的图像存储格式IplImage*,直接暴露内存,如果忘 ...
随机推荐
- [LC] 40. Combination Sum II
Given a collection of candidate numbers (candidates) and a target number (target), find all unique c ...
- python-django项目-每次重启电脑需要启动的虚拟机服务_20191124
python-django项目-每次重启电脑需要启动的虚拟机服务 看来第一步是确定虚拟机的ip问题,必须要是192.168.100.128,否则很多的配置都不能用了, 所以要配置虚拟机的ip, 第一步 ...
- UFT三种录制方式
1.正常录制(Normal Recording) QTP默认的录制模式,这种录制模式是QTP最突出的特点,是直接对对象的操作,可以说此类模式继承了对象模型的所有优点,能够充分发挥对象库的威力.它通过识 ...
- XML的打包与解析
XML的打包与解析 一.XML语言的特点 1.XML独立于任何编程语言,允许人们按接收者容易解析的方式,对复杂数据进行编码.先来看一个简单的XML格式的文件: [XML] 纯文本查看 复制 ...
- 3DSMAX卸载/完美解决安装失败/如何彻底卸载清除干净3DSMAX各种残留注册表和文件的方法
在卸载3dsmax重装3dsmax时发现安装失败,提示是已安装3dsmax或安装失败.这是因为上一次卸载3dsmax没有清理干净,系统会误认为已经安装3dsmax了.有的同学是新装的系统也会出现3ds ...
- MUI 提问框多个按钮的回调函数
var btns = new Array("按钮1", "按钮2"); mui.confirm("这是信息", "这是标题&quo ...
- App Store成绞肉机 让创业者止步
Store成绞肉机 让创业者止步" title="App Store成绞肉机 让创业者止步"> 曾几何时,苹果App Store一直被称之为创业者的天堂.似乎只要灵 ...
- python 有关堡垒机的那些事
堡垒机为了保证系统或服务器的安全性,防止运维和开发人员胡乱操作服务器,导致不必要的损失,使用堡垒机来完成对运维和开发人员的授权.用户统一登录堡垒机账号来操作系统或服务器.堡垒机等于成了生产系统的SSO ...
- 数位dp对于状态描述与发现的一些感悟
今天刷的数位dp 第一题看了题解以后知道了数位dp的基本板子,写数位dp的方式(运用记忆化递归的方法)已经基本固定. 那么接下来的难点主要还是对于题目描述的问题,如何抽象成dp中的状态.就今天刷的题来 ...
- 第十届javaB(5)
试题 E: 迷宫 本题总分:15 分[问题描述] 下图给出了一个迷宫的平面图,其中标记为 1 的为障碍,标记为 0 的为可 以通行的地方.010000 000100 001001 110000迷宫的入 ...