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

OpenCV的fillPoly函数

  使用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的位置像素保持不变。在制作mask时,将感兴趣区域填充为白色,其余部分为黑色可以使用fillpoly函数。

  • fillPoly函数
  1. #include <iostream>
  2. #include <opencv2/opencv.hpp>
  3.  
  4. using namespace cv;
  5. using namespace std;
  6.  
  7. int main()
  8. {
  9. Mat src = imread("02.jpg");
  10.  
  11. Point root_points[][]; //这里有一个问题,如果数组内的数据个数事先不知道,需要开辟很大的数组,占用内存
  12. root_points[][] = Point(, );
  13. root_points[][] = Point(, );
  14. root_points[][] = Point(, );
  15. root_points[][] = Point(, );
  16. root_points[][] = Point(, );
  17. root_points[][] = Point(, );
  18.  
  19. const Point* ppt[] = { root_points[] };
  20. int npt[] = { };
  21.  
  22. //生成原图大小的全黑图像
  23. cv::Mat mask_ann, dst;
  24. src.copyTo(mask_ann);
  25. mask_ann.setTo(cv::Scalar::all());
  26.  
  27. fillPoly(mask_ann, ppt, npt, , Scalar(, , ));
  28. imshow("mask_ann", mask_ann);
  29. src.copyTo(dst, mask_ann);
  30. imshow("dst", dst);
  31. waitKey();
  32. return ;
  33. }
  • 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();

copyTo和clone的区别/制作mask的fillpoly函数(有问题)的更多相关文章

  1. GIT(6)----fork和clone的区别,fetch与pull的区别

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

  2. 【linux开发】IO端口和IO内存的区别及分别使用的函数接口

    IO端口和IO内存的区别及分别使用的函数接口 每个外设都是通过读写其寄存器来控制的.外设寄存器也称为I/O端口,通常包括:控制寄存器.状态寄存器和数据寄存器三大类.根据访问外设寄存器的不同方式,可以把 ...

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

    因为生活的复杂,这是一个并行的世界,在同一时刻,会发生很多奇妙的事情,北方下雪,南方下雨,这里在吃饭,那边在睡觉,有人在学习,有人在运动,所以这时一个多彩多姿的世界,每天都发生着很多事情,所以要想很好 ...

  4. Git 中 pull 和 clone 的区别

    git pull git clone clone 是本地没有 repository 时,将远程 repository 整个下载过来. pull 是本地有 repository 时,将远程 reposi ...

  5. Cloneable 和clone的区别和联系

    设计模式----原型模式时候,涉及到的复制克隆, Cloneable 接口,内部是没有任何方法的, 这个接口其实是一个标记性的接口,和Serializable是一样的,都是标记使用, 在类实现了这个C ...

  6. jQuery之克隆事件--clone()与clone(true)区别

    clone()与clone(true)同为克隆 clone()表示复制标签本身, clone(true)会将标签绑定的事件一起复制 来看案例: <!DOCTYPE html> <ht ...

  7. IO端口和IO内存的区别及分别使用的函数接口

    每个外设都是通过读写其寄存器来控制的.外设寄存器也称为I/O端口,通常包括:控制寄存器.状态寄存器和数据寄存器三大类.根据访问外设寄存器的不同方式,可以把CPU分成两大类.一类CPU(如M68K,Po ...

  8. WordPress插件制作教程(六): 插件函数之动作(Actions)函数

    这一篇为大家说一下WordPress插件函数吧,要制作插件,了解这些函数是非常有必要的 WordPress插件函数分为“动作”(Actions)和过滤器”(Filters),WordPress 使用这 ...

  9. JavaScript面向对象—基本数据类型和引用数据类型的区别和变量及作用域(函数和变量)

    基本类型和引用类型的值 ECMAScript 变量可能包含两种不同的数据类型的值:基本类型值和引用类型值. 基本类型值指的是那些保存在栈内存中的简单数据段,即这种值完全保存在内存中的一个位置. 而引用 ...

随机推荐

  1. [转]Entity Framework教程(第二版)

    源起 很多年前刚毕业那阵写过一篇关于Entity Framework的文章,没发首页却得到100+的推荐.可能是当时Entity Framework刚刚发布介绍EF的文章比较少.一晃这么多年过去了,E ...

  2. 类欧几里德算法(洛谷 P5170

    #include <iostream> #include <cstdio> #include <queue> #include <algorithm> ...

  3. 监听事件动态改变dom状态

    html代码: <table class="table table-striped"> <thead> <tr> <th>分类ID& ...

  4. csp-s模拟测试10.1(b)X 国的军队,排列组合, 回文题解

    题面:https://www.cnblogs.com/Juve/articles/11615883.html X 国的军队: 好像有O(T*N)的直接贪心做法 其实多带一个log的二分也可以过 先对所 ...

  5. 菜鸟nginx源码剖析数据结构篇(二) 双向链表ngx_queue_t[转]

    nginx源码剖析数据结构篇(二) 双向链表ngx_queue_t Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.csdn. ...

  6. PAT甲级——A1070 Mooncake

    Mooncake is a Chinese bakery product traditionally eaten during the Mid-Autumn Festival. Many types ...

  7. php 7.2下mcrypt扩展支持附带的问题

    按照网上提供的mcrypt扩展编译支持方法,完成了扩展编译,也确实可以正常加密/解密了 但是如果php.ini中配置为: error_reporting = E_ALL display_errors ...

  8. HttpException (0x80004005): 无法连接到 SQL Server 会话数据库

    ASP.NET 项目运行时出现错误提示:[HttpException (0x80004005): 无法连接到 SQL Server 会话数据库.] ,后排查问题发现是由于项目的Session模式是使用 ...

  9. 一个WEB网站高并发量的解决方案

    一个小型的网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构.性能的要求都很简单.随着互联网业务的不断丰富,网站相关的技术经过 ...

  10. Jmeter性能测试(第三篇)

    一.调通脚本(以json串Post接口为例)添加聚合报告(线程组->添加->监听器->聚合报告)并调试好需要压测的脚本,如下已经调通的P_C_B151就是我需要压测的脚本 二.设置场 ...