当前位置: 首页 > article >正文

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

Index 目录索引

  • 写在前面
  • 函数介绍
  • 案例演示
  • 参考文章


写在前面

继前文的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()函数有了一个相当清晰的了解,写到这里,差不多本文也就要结束了。如果我的这篇文章帮助到了你,那我也会感到很高兴,一个人能走多远,在于与谁同行。


参考文章

http://www.lryc.cn/news/2413976.html

相关文章:

  • ASP.Net学习心得
  • 用 Gmail 的 SMTP 发送邮件
  • 启动应用程序出现msflxgrd.ocx找不到问题解决
  • 鸿蒙原生应用元服务-访问控制(权限)开发工作流程相关
  • main.js_vue
  • 又一个好用的嵌入式设计框架
  • C#上下文菜单(右键菜单)ContextMenuStrip用法总结
  • 基于STC12C5A60S2系列1T 8051单片机的TM1637键盘数码管模块的数码管显示与TM1637芯片连接的按键的按键值的功能
  • JAX-WS 介绍 【转载】
  • 东方航空航班如何值机?
  • location.hash属性介绍
  • 键盘打字指法规范(附图解)
  • 什么是webservice
  • 数据中心日常运维主要工作内容具体包括哪些方面呢?
  • Windows系统缺少丢失mscoree.dll文件如何解决的?
  • 如何扩容C盘?6种扩展C盘方法!
  • process.waitfor()超时配置
  • Structs2学习(三)
  • win怎么查看linux文件,Windows下查看LINUX ext2/ext3格式的三种常用方法(图解)
  • Element UI --- Select下拉框多选页面数据不更新问题
  • ComponentOne Crack,componentone控件集
  • 【迅搜18】扩展(一)Xapian官方文档学习
  • Android广播机制——广播的注册
  • 线程死锁及其解决
  • 微信小程序自定义navigation-bar导航栏(自适应安卓苹果)
  • 最全软件测试工具大全
  • Git:Git分支管理规范 / 常用命令
  • illegalargumentexception是什么异常_Java程序员必备:异常的十个关键知识点
  • 【C语言】初学者写基础代码的基本步骤
  • CRC循环冗余校验码总结