技术标签: opencv Mat 拷贝 OpenCV
OpenCV的Mat变量之间拷贝分浅拷贝和深拷贝(由于3.0以后对IplImage变量不再使用,所以这里仅考虑Mat变量)
一. 浅拷贝
Mat a;
Mat b = a; //a "copy" to b
Mat c(a); //a "copy" to c
二. 深拷贝
Mat a, b, c, d;
a.copyTo(b); // a copy to b
c = a.clone(); // a copy to c
a.convertTo(d, a.type()); // a copy to d
三. ROI
1. 浅拷贝
Mat B = A(Range::all(), Range(1, 3));
Mat B = A(Rect(0,0,100,100));
A和B共享内存,B只获得了A中ROI区域的位置信息,如下图(懒得画图了,从网上找了张图,变量不对应,请领会精神!)
2. 深拷贝
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,计算与方便,清晰
另外,还可以用mask来拷贝,这里只给出一种方法,还会有不同的方法
main()
{
Mat matSrc = imread("e:/template/lena.jpg");
Mat matDst;
Mat matMask(matSrc.size(),CV_8UC1,Scalar(0));
Rect rect(0, 0, 100, 100);
//绘制mask
rectangle(matMask,rect,Scalar(255),-1);
//带有mask的copyto
matSrc.copyTo(matDst,matMask);
waitKey();
return 0;
}
文章浏览阅读3.6k次。对于iOS开发的新手来说,有时在实现一个类的时候可能会觉得这个类要不要继承NSObject都无所谓,而且当时编译运行时貌视也没有问题。但是,到某个阶段时再运行时发现控制台报错:“does not implement methodSignatureForSelector: -- trouble ahead”以及“does not implement doesNotRecogn_does not implement
文章浏览阅读188次。插件:anime(anime是一个轻量的JavaScript动画库,拥有简单而强大的API,可对CSS属性、SVG、DOM和JavaScript对象进行动画。插件下载:https://pan.baidu.com/s/1j6XtYYdYTFuy_KG0BAjU3w?实例:ANIME搭配SVG实现简约酷炫的登录界面。技术栈:HTML+CSS+JS。_好看的登录页svg图片
文章浏览阅读1.2k次。--以下脚本于20180116在Tony环境实现--创建用户并关联员工--分配职责有单独脚本,不在此处赘述-Oracle FND API–Create User--API - fnd_user_pkg.createuser----Example ---- ---------------------------------------- API to CREA_ebs 您未设置为员工,要访问此表单,您必需是员工
文章浏览阅读868次。题目的意思是有一列数只由1,2,3组成~~~需要咱们将1放在一起排在最前面~~~2放在一起排在中间~~~3放在一起放后面~~问对于这个数列最少要进行多少次交换... 我的方法是先统计1,2,3的个数~~那么就可以知道1,2,3分辨该放在哪个区域~~ 首先将1都放到该放的位置~~其所需步数就是找2~3的区域中1的个数~~然后再看1这个区域里有多少个2可以直接和2区域的交换~~有多
文章浏览阅读4.6k次。原地址:https://www.crazycen.com/vmware/1660.htmlSphere 7.0正式版终于发布,小岑第一时间升级了下测试环境,升级过程一次成功,还是比较顺利在这之前,你需要了解vSphere7.0的升级步骤https://www.vmware.com/products/vsphere/upgrade-center.html优先升级你的vCenter,..._vcsa6.7升级7.0
文章浏览阅读1.5k次。电压偏移要足够低纹波日系电容/台系电容80 plus(节能转化率,电源转化率)如下单双路12v的方案。选择电源的时候,单路12V方案往往在不错的电源上使用,不用费心思去算CPU、显卡等硬件的供电分配问题,利用率也高;双路12V会在廉价的低端电源上出现,往往是12V1给显卡供电、12V2给CPU供电,分开输出,要自己计算,有一路超过电流限制就会断电保护,这样非常麻烦;CPU和显卡的功耗不..._电源负载80
文章浏览阅读1.7k次。CH347FPGADownloader是一款专用于CH347的FPGA下载软件,结合OpenOCD开源项目实现。_jlink配合openocd实现xilinx fpga程序下载
文章浏览阅读2.2k次,点赞3次,收藏2次。遇见问题特此记录希望能帮助到看到的人在跟着ElasticSearch权威指南学习过程中依旧发现有些语句是不再支持的在局部更新一节,依照Demo当前的数据索引结果是这样的:{ _index: "website", _type: "blog", _id: "123", _version: 5, found: true, _source: {_caused_by":{"type":"null_pointer_exception","reason":null}}}]},"status":400}
文章浏览阅读1w次。https://blog.csdn.net/djshichaoren/article/details/81275141今天用MobaXterm连接阿里云服务器,总是显示Access Denied。一开始以为是22端口没打开,但是检查了安全组以后,发现22端口是默认打开的。使用了密钥发现还是不行。最后发现specify username是服务器的用户名,而不是自己随便命名的,我说咋进去以后只..._mobaxterm的ssh连接显示access denied
文章浏览阅读196次。对于宁波的企业来说,获得CE认证不仅是对其产品质量的认可,更是打开欧洲市场的️金钥匙。欧洲,作为世界上最大的经济体之一,拥有庞大的消费市场和高度发达的商业环境。️通过CE认证,宁波的企业可以将自己的产品推向这个广阔的市场,进一步提升品牌知名度和市场占有率。但是,正是因为这种严格的认证制度,使得通过CE认证的产品在市场上更具竞争力,更受消费者的青睐。在这座城市的众多企业中,有许多正致力于通过欧盟的CE认证,为自己的产品打开欧洲市场的大门。_宁波ce认证
文章浏览阅读34次。在Windows 10中,用户文件夹是每个用户帐户的主文件存储位置。用户文件夹的默认名称是用户的用户名。但是,有时候我们可能需要通过编程方式更改用户文件夹的名称。本文将介绍如何使用Python编程语言修改Windows 10用户文件夹的名称。此外,我们还需要更新注册表中的文件夹路径,以确保系统能够正确识别更改后的用户文件夹。首先,我们获取当前的用户名和用户文件夹路径。通过上述代码,您可以使用Python编程语言更改Windows 10用户文件夹的名称。函数将新的文件夹重命名为原有的用户名。
文章浏览阅读889次,点赞22次,收藏8次。你是否玩过古老而不失优雅的大鱼吃小鱼,小鱼的生存之路何尝不是我们这些打工人的写照,以前想用安卓写的,碰巧鸿蒙它来了,那就边学习边记录吧,这个游戏一共分为6篇,记录了鸿蒙App的第一步创建,申明式UI控件如何使用,简单动画的使用,方法的封装,变量的状态管理,点击事件的分发,页面的生命周期,钩子的使用,一些用法与安卓原生的对比等,也算是一个小完整的项目了。第一篇相对简单,只是简单的布局摆放,用的知识点是Stack布局,State状态管理,Entry入口,Component注解等1、创建项目2、项目结构。