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*,直接暴露内存,如果忘 ...
随机推荐
- Ubuntu navicat 连接mysql:access denied for user 'root'@'localhost'
真是醉了,Ubuntu装了navicat后,准备在桌面建立图标不成,结果直接打开后连接mysql都不行,真坑,奈何远程连接就成,这就尬了,今天终于解决了 问题 我也百度了好几个方案,奈何解决不了,最后 ...
- java实现线程交替打印1-52和A-Z
题目: 1.开启两个线程,一个线程打印A-Z,两一个线程打印1-52的数据. 2.实现交替打印,输出结果为12A34B...........5152Z. 3.请用多线程方式实现. 实现思路:通过锁(s ...
- 如何消除img间的默认间隙
方案一:div{font-size:0};方案二:img{ display:block};方案三:img{vertical-align:top;}方案四:div{ margin-bottom:-3px ...
- 数据库连接中断-spring-springBoot
问题:据库和应用在同一台机,数据库用mysql5.6.20,已经升级druid到最新的1.0.7版本,访问的是localhost的mysql,放一个晚上不访问,第二天访问就报错了,重启服务正常,错误提 ...
- Eclipse 配置Android 开发环境
1.eclipse安装ADT插件. 地址:http://dl-ssl.google.com/android/eclipse/ 2.安装成功后,提示重启.重新启动后弹出android sdk 的路径选择 ...
- linux中用户和用户组的概念以及查看命令
Linux 是多用户多任务操作系统,换句话说,Linux 系统支持多个用户在同一时间内登陆,不同用户可以执行不同的任务,并且互不影响. 例如,某台 Linux 服务器上有 4 个用户,分别是 root ...
- 20180110labview串口传输实时显示相关内容
下一步:1.在原有文件不变的基础上,输出实时波形文件,完整的4pmt4ld,并将对应的源探布配通道编号显示在面板上,对应的通道数据索引输出.2.在一次测量OK的那个文件里用while指定字节读取,注意 ...
- LVS(注意iptables和selinux的问题)
1.LVS(高负载) LVS(Linux虚拟服务器) Linux Virtual Server LVS集群采用IP负载均和技术和基于内容请求分发技术.调取器具有很好的吞吐率,将请求均衡的转移到不同的服 ...
- Spring中@Resorce和@Autowired的区别
@Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入,而@Resource默认按 byName自动注入罢了.@Resource有两个属性是比较重要的,分 ...
- 实现 add()(1,2)(3,4)(7,8,9)()
function add(){ var sum=0; function inner(pre,cur){ return pre+cur; } sum=Array.prototype.slice.call ...