OpenCV的copyTo()函数讲解及应用

2023-11-09


写在前面

继前文的setTo()函数讲解后,本文对和该函数用法类似的OpenCV中的copyTo()函数进行讲解。

函数介绍

可以直接在 OpenCV参考文档 中查阅:
在这里插入图片描述
该函数的用法为:

src.copyTo(dst, mask); 

代表src拷贝到dst图上。拷贝的过程中,将srcmask不为0的对应像素点进行拷贝。正如官方文档中讲到的 Its non-zero elements indicate which matrix elements need to be copied


案例演示

如果根据例子的话,或许更好理解这个函数的原理,我们都知道,HSV空间中,因为只有HS通道控制颜色,所以将图像从RGB转换到色彩辨识度更高的HSV空间,可以进行颜色提取,具有代表性的一个应用就是抠图。本文举一个从绿色背景中抠取前景人物图像,并将绿色背景改为红色背景的小案例,案例中参考了贾志刚老师的OpenCV系列课程代码。
在这里插入图片描述

void demo(cv::Mat& image){
	//目的:从绿色背景中抠出前景人物图像
	cv::Mat hsv, mask;
	cvtColor(image, hsv, cv::COLOR_BGR2HSV);
	inRange(hsv, cv::Scalar(35, 43, 46), cv::Scalar(77, 255, 255), mask);
	cv::imshow("mask", mask);   // 得到前景人像区域为黑色,背景白色的mask图

	//目的:将绿色背景换为红色
	cv::Mat redback = cv::Mat::zeros(image.size(), image.type());
	redback = cv::Scalar(40, 40, 200);
	//把人像拷贝到redback上
	bitwise_not(mask, mask);   //取反操作,白变黑,黑变白,将前景人像区域变为白色,背景变为黑色
	//cv::imshow("mask2", mask);
	image.copyTo(redback, mask);  //image拷贝到redback图上。拷贝的过程中,将image在mask上对应不为0的像素点进行拷贝
	cv::imshow("redback", redback);
}

通过Image Watch这个插件,我们可以看到案例中各个变量的值:

原图:
在这里插入图片描述


背景变换后的图:
在这里插入图片描述


至此,想必各位已经对copyTo()函数有了一个相当清晰的了解,写到这里,差不多本文也就要结束了。如果我的这篇文章帮助到了你,那我也会感到很高兴,一个人能走多远,在于与谁同行。


参考文章

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenCV的copyTo()函数讲解及应用 的相关文章

随机推荐

  • ubuntu64位安装交叉编译器出现一些问题

    安装交叉编译工具时 因为交叉编译工具为32位的 而我的ubuntu51 10是64位的 使用交叉编译工具时会出错 一般是安装 apt get install lib32ncurses5 再有出错就去安装对应的库吧 如libstdc so 6
  • 50行代码,实现AI文章生成器,牛逼!

    本文共1502字 预计阅读时间 3分钟 据说 AI 已经可以自动写文章 类似的报道屡见不鲜 但是 AI 写出来的文章到底是什么样的 我想没几个人见识过 无意中看到了 Gayhub 上的这个项目 全称就是 狗屁不通文章生成器 英文名字是 Bu
  • mongovue 导入mysql_【mongo】用户添加、导入数据库、连接VUE

    添加用户 1 安装mongo时最好用apt get install 因为这样可以省去很多麻烦 比如一些环境变量 还有一些文档路径等等的问题 2 确认一下自己的mongodb和mongodb clients的版本 要版本一致才可以 查看mon
  • Linux 中power supply软件架构和相关API

    一 概述 电源管理整体上可以分为两个部分 一个是电池监控 fuel gauge 另外一个是充放电管理 这两部分在内核中也是分为两个驱动来管理 fuelgauge驱动的功能主要是负责向上层Android系统提供当前电池的电量和健康信息等等 同
  • React + MobX - 完全上手指南

    React MobX 完全上手指南 前言 正文 MobX 準備工作 MobX 基本使用 Store Action 組件中 MobX 生效 MobX Decorators MobX Decorators 準備工作 使用 MobX Decora
  • 超详细JDK1.8安装教程

    1 下载并安装 jdk 8u241 windows x64 JDK 8下载地址 https pan baidu com s 1 DN 5RL0mlURsN8dzYjqgw 提取码 rg5n 可自定义目录 之后配置环境变量会用到 一直下一步即
  • QThread使用方法

    QThread使用方法 昨天不小心看到Qt开发人员 Bradley T Hughes Blog中的一片文章 you are doing it wrong 结果看得头昏脑胀 好歹也自学了近1年的Qt 也一直很小心 很认真地阅读Qt和manua
  • Verilog中Case语句

    转自 https blog csdn net CLL caicai article details 104395480 实际问题中常常需要用到多分支选择 使用if语句导致内容繁琐 更明智的做法是使用case语句 case语句是一种多分支选择
  • 七牛云入门使用步骤(图片服务器使用)

    登入七牛云官网得到3个比较重要的参数 如图 1 sk 2 ak 3 测试域名 第一步导入七牛云sdk
  • 数据结构-查找(顺序查找与二分查找的讲解与代码实现)

    顺序查找概念 从表的另一端开始 一次将记录的关键字和给定值进行比较 若某个记录的关键字和给定的值相等 则查找成功 反之则查找失败 ASL 平均查找长度 pi查找概率 ci查找次数 eg 序列1 2 3 查找1的次数为1概率为1 3 2为两次
  • AdaCost

    AdaCost算法 参考 AdaCost Misclassification Cost sensitive Boosting 代价敏感 错分类的损失很大的样例 比如新冠肺炎本来是阳性但是被检测出阴性 Cost sensitive思想是一种符
  • 半导体行业深度报告:从应用到行业的全面复苏

    来源 国金证券 一 2020 2021年全球半导体市场投资展望 多种因素导致全球半导体市场于 2019 年同比下跌近 13 到 4 102 亿美元 而存储器行业同比下跌超过 30 逻辑半导体同比下跌近 2 存储器市场占全球半导体市场达到近三
  • 数据结构:C语言实现二叉树的构建以及遍历操作

    使用二叉链表的存储结构存储二叉树 typedef struct BinNode int data struct BinNode lchild struct BinNode rchild BinNode BinTree BinTree bin
  • [工具使用]SqlMap

    工具使用 SqlMap SqlMap 常用指令 探测目标网站是否存在注入 查询数据库users 查询数据库passwords 查询数据库当前用户 查询当前数据库用户是否是管理员权限 列出数据库的管理员用户名 查询所有数据库 查询当前数据库
  • 利用Pycharm上传代码到GitHub

    前提 必须能正常链接上GitHub网站 并且拥有GitHub账号 在win环境或者Ubuntu环境上必须安装有git 安装好pycharm 并且有上传的代码 pycharm配置GitHub账号 首先需要将准备上传的project配置GitH
  • linux通过端口号定位进程的几种方法

    通过端口号找进程ID Pid 1 概述 日常在linux 服务器上排查问题时 会有根据端口号找对应pid 进程id 的需求 最终通过定位pid来排查问题 本文将介绍如何在linux系统上通过监听端口号找到相关的进程 2 使用netstat命
  • CNN模型 INT8 量化实现方式(一)

    当前CNN模型基本都是 float32 将其转换为 INT8 可以降低模型大小 提升速度 精度降低的也不太多 那么在实际中如何实现这个量化了 在网上找到了三种实践方法 基于腾讯的NCNN Tensorflow Nvidia 的 Tensor
  • 接口抓包,Fiddler抓包使用方法总结,入门到精通辅助实战...

    目录 导读 前言 一 Python编程入门到精通 二 接口自动化项目实战 三 Web自动化项目实战 四 App自动化项目实战 五 一线大厂简历 六 测试开发DevOps体系 七 常用自动化测试工具 八 JMeter性能测试 九 总结 尾部小
  • 【面向对象编程 C++】笔记(完结)

    前言 是为复习做的笔记 内容来自课本和老师的课件 不全面 第10章 类和对象 面向对象 注重过程 把事件分成小模块 类和对象的定义与访问 注意 类定义结束处有分号 类是一种类型 该类型的变量成为对象 类成员的访问特性 成员函数的定义 类内声
  • OpenCV的copyTo()函数讲解及应用

    Index 目录索引 写在前面 函数介绍 案例演示 参考文章 写在前面 继前文的setTo 函数讲解后 本文对和该函数用法类似的OpenCV中的copyTo 函数进行讲解 函数介绍 可以直接在 OpenCV参考文档 中查阅 该函数的用法为