copyTo和clone的区别/制作mask的fillpoly函数(有问题)
OpenCV的fillPoly函数
使用OpenCV库进行图像处理时,经常会用到clone和copyTo函数,这里对两个函数进行介绍。
- copyTo函数
实现和clone一样的功能,但一般多用于掩模贴图:
Mat src = imread(imagepath);
Mat src_temp;
src.copyTo(src_temp);
另外用途最广的是它的贴图功能:
src.copyTo(src_temp, mask);
其中mask为一个二值的掩模图像,如果如果在某个像素点(i, j)其值为1,则把src中对应位置的像素复制到src_temp中,其余为0的位置像素保持不变。在制作mask时,将感兴趣区域填充为白色,其余部分为黑色可以使用fillpoly函数。
- fillPoly函数
#include <iostream>
#include <opencv2/opencv.hpp> using namespace cv;
using namespace std; int main()
{
Mat src = imread("02.jpg"); Point root_points[][]; //这里有一个问题,如果数组内的数据个数事先不知道,需要开辟很大的数组,占用内存
root_points[][] = Point(, );
root_points[][] = Point(, );
root_points[][] = Point(, );
root_points[][] = Point(, );
root_points[][] = Point(, );
root_points[][] = Point(, ); const Point* ppt[] = { root_points[] };
int npt[] = { }; //生成原图大小的全黑图像
cv::Mat mask_ann, dst;
src.copyTo(mask_ann);
mask_ann.setTo(cv::Scalar::all()); fillPoly(mask_ann, ppt, npt, , Scalar(, , ));
imshow("mask_ann", mask_ann);
src.copyTo(dst, mask_ann);
imshow("dst", dst);
waitKey();
return ;
}
- clone函数
分析源码可以看出,该函数的实现是copyTo的第一种用法:
inline Mat Mat::clone() const
{
Mat m;
copyTo(m);
return m;
}
多用于复制图片,比如读入一张图像,对其进行处理时,只是想看下效果并不像让原图发生变化,这时候可以重新声明如下:
Mat src = imread(imagepath);
Mat src_temp = src.clone();
copyTo和clone的区别/制作mask的fillpoly函数(有问题)的更多相关文章
- GIT(6)----fork和clone的区别,fetch与pull的区别
参考资料: [1].Git学习笔记:fork和clone的区别,fetch与pull的区别 [2].在Github和Git上fork之简单指南
- 【linux开发】IO端口和IO内存的区别及分别使用的函数接口
IO端口和IO内存的区别及分别使用的函数接口 每个外设都是通过读写其寄存器来控制的.外设寄存器也称为I/O端口,通常包括:控制寄存器.状态寄存器和数据寄存器三大类.根据访问外设寄存器的不同方式,可以把 ...
- fork()、vfork()、clone()的区别
因为生活的复杂,这是一个并行的世界,在同一时刻,会发生很多奇妙的事情,北方下雪,南方下雨,这里在吃饭,那边在睡觉,有人在学习,有人在运动,所以这时一个多彩多姿的世界,每天都发生着很多事情,所以要想很好 ...
- Git 中 pull 和 clone 的区别
git pull git clone clone 是本地没有 repository 时,将远程 repository 整个下载过来. pull 是本地有 repository 时,将远程 reposi ...
- Cloneable 和clone的区别和联系
设计模式----原型模式时候,涉及到的复制克隆, Cloneable 接口,内部是没有任何方法的, 这个接口其实是一个标记性的接口,和Serializable是一样的,都是标记使用, 在类实现了这个C ...
- jQuery之克隆事件--clone()与clone(true)区别
clone()与clone(true)同为克隆 clone()表示复制标签本身, clone(true)会将标签绑定的事件一起复制 来看案例: <!DOCTYPE html> <ht ...
- IO端口和IO内存的区别及分别使用的函数接口
每个外设都是通过读写其寄存器来控制的.外设寄存器也称为I/O端口,通常包括:控制寄存器.状态寄存器和数据寄存器三大类.根据访问外设寄存器的不同方式,可以把CPU分成两大类.一类CPU(如M68K,Po ...
- WordPress插件制作教程(六): 插件函数之动作(Actions)函数
这一篇为大家说一下WordPress插件函数吧,要制作插件,了解这些函数是非常有必要的 WordPress插件函数分为“动作”(Actions)和过滤器”(Filters),WordPress 使用这 ...
- JavaScript面向对象—基本数据类型和引用数据类型的区别和变量及作用域(函数和变量)
基本类型和引用类型的值 ECMAScript 变量可能包含两种不同的数据类型的值:基本类型值和引用类型值. 基本类型值指的是那些保存在栈内存中的简单数据段,即这种值完全保存在内存中的一个位置. 而引用 ...
随机推荐
- 在页面上显示PDF
/// <summary> /// 读取PDF文件 /// </summary> /// <param name="fName">文件名称(可以 ...
- 图片上传的ImageIO工具类
ImageIO类说明 最近的项目中遇到ImageIO,因此记录下这个类的用法 一.ImageIO: 这个类中的方法都是静态方法,可以用来进行简单的图片IO操作 1.读入的三种方法 public sta ...
- LoadRunner如何调用外部函数
LoadRunner如何调用外部函数 使用 VuGen 时,可以调用在外部 DLL 中定义的函数.通过从脚本调用外部函数,可以降低脚本的内存使用量以及总体运行时间.要调用外部函数,需要加载定义了该函数 ...
- SpringBoot学习笔记(八):SpringBoot启动端口+访问路、SpringBoot配置文件yml、SpringBoot多环境区分、SpringBoot打包发布
SpringBoot启动端口+访问路径 配置文件: server.port=9090 server.context-path=/springboot 现在只能用http://127.0.0.1:909 ...
- div 和 span 标记
div 一般和 css 配合使用 <div>是一个块元素 span 也是和 css 配合使用 <span>是一个行内元素 标记嵌套是 一般是块元素嵌套行内元素 1 块元素 ...
- MyEclispe点击add deploment 无反应的处理,无法添加项目到Tomcat
比如你的工作空间为 E:\workspace-project 找到以下路径: E:\workspace-project\.metadata\.plugins\org.eclipse.core.runt ...
- C++【stack/queue】用法和例子
Stack的常用基本操作: s.push() // 压栈 s.emplace() // 插入,相当于push(目前掌握的唯一区别是emplace可以自行调用构造函数,push不行) s.empty() ...
- jqGrid的subGrid子表格
使用完整jqGrid作为子表格 使用子表格,涉及到jqGrid的三个选项: subGrid :首先必须将jqGrid的subGrid选项设置为true,默认为false:当此项设为true的时候,Gr ...
- PostgreSQL DISTINCT ON
https://stackoverflow.com/questions/3800551/select-first-row-in-each-group-by-group select DISTINCT ...
- 在输入一个url到返回页面,中间发生了什么?
在浏览器中输入url,客户端先检查本地是否有对应的ip地址,如果找到了则返回响应的ip地址,如果没有找到则会请求DNS服务器,返回解析后的ip地址.应用层客户端发送HTTP请求,包括请求头和请求体.其 ...