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 变量可能包含两种不同的数据类型的值:基本类型值和引用类型值. 基本类型值指的是那些保存在栈内存中的简单数据段,即这种值完全保存在内存中的一个位置. 而引用 ...
 
随机推荐
- 使用CEfSharp之旅(6)拦截网络请求 截取response返回
			
原文:使用CEfSharp之旅(6)拦截网络请求 截取response返回 版权声明:本文为博主原创文章,未经博主允许不得转载.可点击关注博主 ,不明白的进群191065815 我的群里问 https ...
 - google浏览器插件开发
			
官方开发文档 随便找个文件夹新建插件所需文件 目录结构 pluginName manifest.json(必须) 一个manifest文件 *.htm ...
 - nodejs和vuejs的关系
			
转自:https://blog.csdn.net/myKurt/article/details/79914078 nodejs类比Java中:JVM 详述: 就前端来说nodejs具有划时代的意义, ...
 - windows pip 安装 转载
			
经常在使用Python的时候需要安装各种模块,而pip是很强大的模块安装工具,但是由于国外官方pypi经常被墙,导致不可用,所以我们最好是将自己使用的pip源更换一下,这样就能解决被墙导致的装不上库的 ...
 - JavaWeb中请求转发和请求重定向的区别
			
针对于JavaWeb中请求与重定向的一个cheatsheep: 1.转发 1)完成一次转发,用户浏览器发送一次请求 2)转发之后,浏览器URL地址栏不改变(服务器帮忙完成) 3)请求域中数据不丢失 4 ...
 - leetcode-95-不同的二叉搜索树(卡特兰数)
			
题目描述: 方法一:动态规划 O(n^2) O(n) class Solution: def numTrees(self, n: int) -> int: dp = [0]*(n+1) dp[0 ...
 - JUC 一 Callable
			
java.util.concurrent.Callable是一个泛型接口,只有一个call()方法 Callable和Runnable的区别 Callable使用call()方法,Runnable使用 ...
 - egret 篇——关于ios环境下微信浏览器的音频自动播放问题
			
前段时间公司突然想用egret(白鹭引擎)做一个金币游戏,大半个月边看文档边写吭哧吭哧也总算是弄完了.期间遇到一个问题,那就是ios环境下微信浏览器的音频自动播放问题. 个人感觉吧,egret自己封装 ...
 - iOS7新特性-完美解决iOS7关于自定义导航条UIBarButtonItem偏移的问题
			
前言: 本文由DevDiv社区@Vincent 原创,转载请注明出处! http://www.devdiv.com/iOS_iPhone-ios_ios_uibarbuttonitem_-thread ...
 - 前端之CSS初识
			
figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...