opencv之图像mat复制copyTo,clone=
函数原型
Mat clone() const;
void copyTo( OutputArray m ) const;
void copyTo( OutputArray m, InputArray mask) const;
copyTo()有重载,
对于你说的imge.clone()和imge.copyTo(result)这种情况,源码解释如下
inline Mat Mat::clone() const
{
Mat m;
copyTo(m);
return m;
}
相信一看就能知道了,呵呵,所以clone()和 copyTo()区别就在copyTo()的第二个实现吧,带掩码的那个。
图像用Mat来表示。图像的复制方法比较多,例如
src.clone()
src.copyTo(dst)
src.copyTo(dst, mask)
dst与src类型相同时,直接创建并复制图像数据(深copy),
src.convertTo(dst, type, scale, shift)
当src.depth==dst.depth且noscale时,等同于copyTo(创建并复制);其他,转换并复制数据
这样,复制一个图像的ROI到另外一个图像的指定区域就简单多了。
如opencv中给出的例子
Rect r(1, 1, 10, 20); // 指定src 的 ROI子图像区域
Mat dstroi =dst(Rect(0,10,r.width,r.height)); // 拿到 dst指定区域子图像的引用
src(r).convertTo(dstroi, dstroi.type(), 1,0); // ROI子图像之间的复制
此时,无需指定图像的ROI,计算也比较方便,清晰。
opencv矩阵赋值函数copyTo、clone、重载元算赋‘=’之间实现的功能相似均是给不同的矩阵赋值功能。
copyTo和clone函数基本相同,被赋值的矩阵和赋值矩阵之间空间独立,不共享同一空间。
但是重载元算赋‘=’,被赋值的矩阵和赋值矩阵之间空间共享,改变任一个矩阵的值,会同时影响到另一个矩阵。当矩阵作为函数的返回值时其功能和重载元算赋‘=’相同,赋值运算赋会给矩阵空间增加一次计数,所以函数变量返回后函数内部申请的变量空间并不会被撤销,在主函数中仍可以正常使用传递后的参数。具体的过程见下面的测试程序。
opencv之图像mat复制copyTo,clone=相关推荐
- OpenCV中图像Mat,二维指针和CxImage类之间的转换
在做图像处理中,常用的函数接口有Opencv中的Mat图像类,有时候需要直接用二维指针开辟内存直接存储图像数据,有时候需要用到CxImage类存储图像.本文主要是总结下这三类存储方式之间的图像数据的转 ...
- OpenCV中图像Mat存储格式和MATLAB中图像Mat存储格式的区别
首先,看一下图像中的宽高与笛卡尔坐标系之间的关系如下图所示,即x与width(cols)对应,y与height(rows)对应,x是按列来进行变化,y按行变化. OpenCV读入图像以Mat形式存储时 ...
- 独家|OpenCV 1.1 Mat - 基本图像容器(附链接)
翻译:陈之炎 校对:吴振东.林夕本文约3600字,建议阅读10分钟本文为大家系统地介绍了OpenCV官方教程. 写在前边 让读者朋友们较为系统地了解和学习OpenCV官方教程,数据派THU翻译组联合研 ...
- python的opencv的图像对象存储的颜色通道_OpenCV大型阵列类型Mat类
一.Mat类 Mat类是C++实现的OpenCV库的核心,表示一个N维度单通或多通道阵列,可以用来存储实数或复数值向量和数组,灰度或彩色图像,向量场,张量及直方图(当然高纬度的直方图存储在稀疏Mat类 ...
- opencv mat用数组初始化_10、OpenCV中图像和Mat类型(一)
Mat类型可以被认为是OpenCV库的核心. OpenCV库中绝大多数的函数都是Mat类的成员,以Mat作为参数,或者Mat作为返回值. Mat类用于表示任意维数的密集数组.即使对于数组中的该条目为零 ...
- OpenCV中图像以Mat类型保存时各通道数据在内存中的组织形式及python代码访问各通道数据的简要方式...
OpenCV中图像以Mat类型保存时各通道数据在内存中的组织形式及python代码访问各通道数据的简要方式 以最简单的4 x 5三通道图像为例,其在内存中Mat类型的数据组织形式如下: 每一行的每一列 ...
- 【OpenCV 例程200篇】08. 图像的复制(np.copy)
[OpenCV 例程200篇]08. 图像的复制(np.copy) 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 使 ...
- OpenCV3学习(2.2)——图像Mat矩阵操作与常用函数
三.大型数组类 OpenCV3对大型数据的存储,具有代表性的是 cv::Mat和cv::SparseMat 类型. cv::Mat针对的是密集连续性的存储,大多数的图像数据被存储为这种类,即使数据为空 ...
- 图像识别——(java)opencv(处理图像各种算法测试)
https://note.youdao.com/ynoteshare/index.html?id=e0df335c7bba4d7633874375539c228a&type=note& ...
最新文章
- 成为优秀UI设计师需要具备哪些条件?
- angular.element()的用法
- python 二叉树中所有距离为k的节点_leetcode 二叉树中所有距离为 K 的结点
- python闭环最短路径_python实现最短路径的实例方法
- 5ic计算机考试考卷读取错误,最新计算机一级试题第五套
- VSTS : 在性能调优中找到瓶颈所在
- Angular 依赖注入的学习笔记
- C++头插法尾插法建立单链表,合并两个有序单链表
- Linux管理文件和目录
- MySql 一条更新语句是如何执行的? MySql杂谈、MySql WAL 技术
- 全面剖析泛微协同管理平台(e-cology)十大亮点
- 确定有限自动机DFA非确定有限自动机NFA
- 债券久期为什么难理解
- java中一元加号和减号是什么_一元运算符
- 在不损坏硬盘数据情况下,MBR格式转GPT格式,手动创建EFI和MSR分区,安装WIN10/WIN8.1...
- 船舶物资与市场杂志船舶物资与市场杂志社船舶物资与市场编辑部2022年第7期目录
- TriSun PDF to X中文版批量pdf转换功能
- Web浏览过程中涉及到的协议
- 录音文件下载_录音转文字app有哪些?录音转文字助手怎么样?
- Win32如何定义IP数据报的首部