copyTo和clone的区别

OpenCV中mat::copyto( )函数使用方法

  使用OpenCV库进行图像处理时,经常会用到clone和copyTo函数,这里对两个函数进行介绍。

  • copyTo函数

  实现和clone一样的功能,但一般多用于掩模贴图

1 Mat src = imread(imagepath);
2 Mat src_temp;
3 src.copyTo(src_temp);

  另外用途最广的是它的贴图功能:

1 src.copyTo(src_temp, mask);

  其中mask为一个二值的掩模图像,如果如果在某个像素点(i, j)其值为1,则把src中对应位置的像素复制到src_temp中,其余为0的位置像素保持不变。

  • clone函数

  分析源码可以看出,该函数的实现是copyTo的第一种用法:

1 inline Mat Mat::clone() const
2 {
3    Mat m;
4     copyTo(m);
5     return m;
6 }

  多用于复制图片,比如读入一张图像,对其进行处理时,只是想看下效果并不像让原图发生变化,这时候可以重新声明如下:

1 Mat src = imread(imagepath);
2 Mat src_temp = src.clone();

原文地址:https://www.cnblogs.com/qinguoyi/p/8371292.html

时间: 2024-11-09 06:07:05

copyTo和clone的区别的相关文章

GIT:fork和clone的区别,fetch与pull的区别

参考资料: [1].Git学习笔记:fork和clone的区别,fetch与pull的区别 [2].在Github和Git上fork之简单指南

opencv矩阵赋值函数copyTo、clone、重载元算赋=的比较

opencv矩阵赋值函数copyTo.clone.重载元算赋'='之间实现的功能相似均是给不同的矩阵赋值功能.copyTo和clone函数基本相同,被赋值的矩阵和赋值矩阵之间空间独立,不共享同一空间.但是重载元算赋'=',被赋值的矩阵和赋值矩阵之间空间共享,改变任一个矩阵的值,会同时影响到另一个矩阵.当矩阵作为函数的返回值时其功能和重载元算赋'='相同,赋值运算赋会给矩阵空间增加一次计数,所以函数变量返回后函数内部申请的变量空间并不会被撤销,在主函数中仍可以正常使用传递后的参数.具体的过程见下面

fork()、vfork()、clone()的区别

因为生活的复杂,这是一个并行的世界,在同一时刻,会发生很多奇妙的事情,北方下雪,南方下雨,这里在吃饭,那边在睡觉,有人在学习,有人在运动,所以这时一个多彩多姿的世界,每天都发生着很多事情,所以要想很好的表现这个世界,协调完成一件事儿,就得用到多进程或者多线程.所以进程是程序猿一定会接触到的一个东西,他能使我们的程序效率提高,高效的完成多任务,并行执行.下面主要看看产生进程或线程的三个函数. fork,vfork,clone都是linux的系统调用,这三个函数分别调用了sys_fork.sys_v

Cloneable 和clone的区别和联系

设计模式----原型模式时候,涉及到的复制克隆, Cloneable 接口,内部是没有任何方法的, 这个接口其实是一个标记性的接口,和Serializable是一样的,都是标记使用, 在类实现了这个Cloneable 接口后调用Object中得clone方法,才可以正常的使用,如果没有implements Cloneable的类调用Object.clone()方法就会抛出CloneNotSupportedException. 在复制中,分为浅复制和深复制: 先说浅复制: 其实这样的复制是一种很危

系统调用fork()、vfork()以及clone()

一.宏观实现 以前介绍过fork()和clone()的区别,下面介绍一下两者在程序接口上的不同: pid_t fork(void); int __clone(int(*fn)(void *arg), void * child_stack, int flags, void *args) 系统调用__clone()的主要用途是创建一个线程,这个线程可以是内核线程,也可以是用户线程.创建用户空间线程时,可以给定子线程用户空间堆栈的位置,还可以指定子进程运行的起点.同时,也可以用__clone()创建进

linux 进程创建clone、fork与vfork

目录: 1.clone.fork与vfork介绍 2.fork说明 3.vfork说明 4.clone说明5.fork,vfork,clone的区别 内容: 1.clone.fork与vfork介绍 Linux下的进程与线程相同点是都有进程控制块(PCB,具体的类是task_struct).区别在于一个有独立的进程资源,一个是共享的进程资源.除了内核线程是完全没有用户空间.进程资源包括进程的PCB.线程的系统堆栈.进程的用户空间.进程打开的设备(文件描述符集)等. Linux的用户进程不能直接被

Git使用基本方法(从远程服务器获取分支,提交修改)

做项目初次用到Git,以前没用过,完全没不懂,琢磨了好久才弄得差不多,特此分享,可以少走点弯路. 这次用的操作系统是Mint 1.首先需要安装Git sudo apt-get install git 2.在本地新建Git仓库 新建一个文件夹,然后文件夹中打开终端,输入命令git init,即可创建一个仓库 3.连接Git服务器 这次我们用的服务器是http://git.oschina.net 输入命令 git remote add origin <server>,将<server>

[转]git使用问题-解决方法 备忘

1-- clone分支,修改文件本地commit后, push回原分支失败,报错: git push   [email protected]'s password:   Counting objects: 21, done.  Compressing objects: 100% (11/11), done.  Writing objects: 100% (11/11), 1010 bytes, done.  Total 11 (delta 9), reused 0 (delta 0)  erro

一款特好用的JavaScript框架——JQuery

  了解了解                    jQuery是一个快速,小巧,功能丰富的JavaScript库.它使诸如HTML文档遍历和操纵,事件处理,动画和Ajax等事情变得简单得多,而且易于使用的API可以在多种浏览器中使用. 一. 什么是JQuery? jQuery是一个JavaScript函数库. jQuery是一个轻量级的"写的少,做的多"的JavaScript库. jQuery 的功能概括 1.html 的元素选取 2.html的元素操作 3.html dom遍历和修