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

OPENCV C++(五)滤波函数+sobel边缘检测+人脸磨皮mask

滤波函数

 中值滤波

medianBlur(frame, detectmat, 5);

平均滤波

blur(frame, detectmat, Size(5, 5));

高斯滤波(最后一个是方差 越大越模糊)

GaussianBlur(frame, detectmat, Size(5, 5),0);

sobel的边缘检测函数

Sobel(gray, dx, CV_16S, 1, 0, 3);//x方向的 因为是1,0
convertScaleAbs(dx, dx);//转换绝对值
Sobel(gray, dy, CV_16SC1, 0, 1, 3);//y方向的 因为0,1
convertScaleAbs(dy, dy);
Sobel(gray, dx_add_dy1, CV_16SC1, 1, 1, 3);//尝试一下1,1 发现并不是简单的都叠加
convertScaleAbs(dx_add_dy1, dx_add_dy1);//效果不好 为啥?addWeighted(dx, 0.5, dy, 0.5, 0, dx_add_dy2);只能互相单独做 然后再叠加的方式 效果很好

 


利用高斯滤波对人脸进行平滑处理,学习mask的应用

人脸阈值

//肤色h					double i_minH = 0;double i_maxH = 20;//肤色颜色饱和度sdouble i_minS = 43;double i_maxS = 255;//肤色颜色亮度vdouble i_minV = 55;double i_maxV = 255;

将原图转化为HSV类型,找出人脸并并给maskmat(这里是一个区域,人脸所包含是roi)

		cvtColor(frame, hsvMat, COLOR_BGR2HSV);frame.copyTo(maskMat);cv::inRange(hsvMat, Scalar(i_minH, i_minS, i_minV), Scalar(i_maxH, i_maxS, i_maxV), maskMat);

对原图进行高斯滤波

GaussianBlur(frame, guss_Mat, Size(5, 5), 3, 0);

将高斯滤波后的人脸区域替换到原图上

		frame.copyTo(objectMat);guss_Mat.copyTo(objectMat, maskMat);imshow("磨皮后", objectMat);




 

完整代码:

#include <opencv2/opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;int main() {VideoCapture cap(0);while (1) {Mat frame;Mat detectmat;Mat dx;Mat dy;Mat dx_add_dy1;Mat dx_add_dy2;Mat gray;cap >> frame;cvtColor(frame, gray, COLOR_BGR2GRAY);frame.copyTo(detectmat);//medianBlur(frame, detectmat, 5);//blur(frame, detectmat, Size(5, 5));//GaussianBlur(frame, detectmat, Size(5, 5),0); //最后一个是方差 越大越模糊Sobel(gray, dx, CV_16S, 1, 0, 3);convertScaleAbs(dx, dx);Sobel(gray, dy, CV_16SC1, 0, 1, 3);convertScaleAbs(dy, dy);Sobel(gray, dx_add_dy1, CV_16SC1, 1, 1, 3);convertScaleAbs(dx_add_dy1, dx_add_dy1);//效果不好 为啥?addWeighted(dx, 0.5, dy, 0.5, 0, dx_add_dy2);//imshow("frame", frame);//imshow("detect", detectmat);imshow("dx", dx);imshow("dy", dy);imshow("dx_add_dy1", dx_add_dy1);//效果不好imshow("dx_add_dy2", dx_add_dy2);/Mat hsvMat;Mat maskMat;Mat objectMat;Mat guss_Mat;//肤色h					double i_minH = 0;double i_maxH = 20;//肤色颜色饱和度sdouble i_minS = 43;double i_maxS = 255;//肤色颜色亮度vdouble i_minV = 55;double i_maxV = 255;cvtColor(frame, hsvMat, COLOR_BGR2HSV);frame.copyTo(maskMat);cv::inRange(hsvMat, Scalar(i_minH, i_minS, i_minV), Scalar(i_maxH, i_maxS, i_maxV), maskMat);GaussianBlur(frame, guss_Mat, Size(5, 5), 3, 0);frame.copyTo(objectMat);guss_Mat.copyTo(objectMat, maskMat);imshow("磨皮后", objectMat);waitKey(30);}return 0;
}

 

相关文章:

OPENCV C++(五)滤波函数+sobel边缘检测+人脸磨皮mask

滤波函数 中值滤波 medianBlur(frame, detectmat, 5); 平均滤波 blur(frame, detectmat, Size(5, 5)); 高斯滤波&#xff08;最后一个是方差 越大越模糊&#xff09; GaussianBlur(frame, detectmat, Size(5, 5),0); sobel的边缘检测函数 Sobel(gray, dx, CV_16S, 1, 0, 3…...

20天突破英语四级高频词汇——第②天

2&#xfeff;0天突破英语四级高频词汇~第2天加油(ง •_•)ง&#x1f4aa; &#x1f433;博主&#xff1a;命运之光 &#x1f308;专栏&#xff1a;英语四级高频词汇速记 &#x1f30c;博主的其他文章&#xff1a;点击进入博主的主页 目录 2&#xfeff;0天突破英语四级高…...

【Python 学习】第一个python案例

Python的ATM机Demo 一、需要安装python环境(略) 二、ATM源码 # 初始化全局余额 money 5000# 定义初始化界面菜单函数def menu(name):"""主页面-主菜单 返回用户选择的菜单:param name: 用户名称:return: 返回菜单类型"""print(f"{name}…...

【C#学习笔记】值类型(2)

文章目录 Struct结构体类型为什么不推荐struct 元组类型可为空的值类型从可为空的值类型转换为基础类型提升的运算符如何确定可为空的值类型为什么建议少用T?装箱和取消装箱 Struct结构体类型 结构类型&#xff08;“structure type”或“struct type”&#xff09;是一种可封…...

【设计模式】-建造者模式

Java建造者模式&#xff1a;创建复杂对象的灵活构建者 在软件开发中&#xff0c;我们经常遇到需要创建一个复杂对象的情况。如果使用传统的构造函数进行对象创建&#xff0c;可能会导致构造函数参数过多&#xff0c;难以管理和维护。建造者模式&#xff08;Builder Pattern&am…...

【N32L40X】学习笔记14-在RT-thread系统中读取eeprom数据

eeprom 说明 eeprom介绍 AT24C01A&#xff0c;1K串行EEPROM&#xff1a;内部组织16页8字节&#xff0c;1K需要一个7位数据字地址进行随机字寻址。AT24C02,2K串行EEPROM&#xff1a;内部组织32页8字节&#xff0c;2K需要一个8位数据字地址进行随机字寻址。AT24C04,4K串行EEPRO…...

Python OpenCV读取并显示USB UVC摄像头

1. 安装Python&#xff0c; 略。 2. 安装 OpenCV: pip install opencv-python 3. 预览摄像头画面脚本&#xff1a; import cv2cap cv2.VideoCapture(0, cv2.CAP_DSHOW)if not (cap.isOpened()):print("Could not open video device")cap.set(cv2.CAP_PR…...

针对高可靠性和高性能优化的1200V碳化硅沟道MOSFET

目录 标题&#xff1a;1200V SiC Trench-MOSFET Optimized for High Reliability and High Performance摘要信息解释研究了什么文章创新点文章的研究方法文章的结论 标题&#xff1a;1200V SiC Trench-MOSFET Optimized for High Reliability and High Performance 摘要 本文详…...

在服务器上搭建gitlab

最终效果展示&#xff1a; 官方文档&#xff1a; 安装部署GitLab服务 1.在服务器上下载gitlab wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.9.0-ce.0.el7.x86_64.rpm rpm -ivh gitlab-ce-12.9.0-ce.0.el7.x86_64.rpm 2.编辑站点位置 vim …...

Amazon Aurora Serverless v2 正式发布:针对要求苛刻的工作负载的即时扩展

我们非常兴奋地宣布&#xff0c;Amazon Aurora Serverless v2 现已面向 Aurora PostgreSQL 和 MySQL 正式发布。Aurora Serverless 是一种面向 Amazon Aurora 的按需自动扩展配置&#xff0c;可让您的数据库根据应用程序的需求扩展或缩减容量。 亚马逊云科技开发者社区为开发者…...

nginx的优化和防盗链 重要!!!

实验一、隐藏版本号 要把nginx的版本号隐藏起来&#xff0c;防止恶意攻击 方法一&#xff1a;修改配置文件 在http模块中加入一个命令 server_token off&#xff1b; 过程&#xff1a; 备份&#xff0c;改配置文件一定要备份 修改配置文件 在http模块中添加 server_tokens …...

十五.redis缓存穿透,击穿,雪崩

redis哨兵模式 一.缓存穿透1.概念2.解决方案1&#xff09;接口校验2&#xff09;缓存空值3&#xff09;布隆过滤器4&#xff09;实时监控 二.缓存击穿1.概念2.解决方案1&#xff09;设置热点数据永不过期2&#xff09;加互斥锁3&#xff09;”提前“使用互斥锁 / 逻辑过期4&…...

Spring源码——初识Spring容器

Spring源码之工厂&#xff08;容器&#xff09; 为什么把Spring的工厂又叫做容器呢&#xff1f; 工厂的责任是创建对象&#xff0c;但是创建完对象后还要进行存储&#xff08;针对于单例的对象来讲&#xff09;&#xff0c;以供其他地方使用&#xff0c;这就是容器。为了能存…...

arcgis--数据库构建网络数据集

1、打开arcmap软件&#xff0c;导入数据&#xff0c;如下&#xff1a; 该数据已经过处理&#xff0c;各交点处均被打断&#xff0c;并进行了拓扑检查。 2、在文件夹下新建文件数据库&#xff0c;名称为路网&#xff0c;在数据库下新建要素类&#xff0c;并导入道路shp文件&…...

华为OD机试真题【西天取经】

1、题目描述 【西天取经】 唐僧师徒四人去西天取经&#xff0c;一路翻山越岭。一日&#xff0c;师徒四人途径一个 mxn 长方形区域&#xff0c;已知 1.将取经队伍作为一个整体&#xff0c;4 人行走相同路线。 2.取经队伍的起点为该长方形区域的左上角&#xff0c;目的地为该长方…...

心电信号时域特征分析与Python实现

目录 1 引言 2 心电信号时域特征的含义 3 Python实现心电信号时域特征提取 4 结论 1 引言 心电信号是由心脏电活动引起的电信号...

认识MyBatis 之 MyBatis的动态SQL

前言 本篇介绍MyBatis里如何使用动态SQL&#xff0c;了解如何去简单使用动态标签&#xff1b;如有错误&#xff0c;请在评论区指正&#xff0c;让我们一起交流&#xff0c;共同进步&#xff01; 文章目录 前言MyBatis - 动态 SQLif标签trim标签where标签update set 标签delet…...

【项目 计网2】4.4网络模型 4.5协议 4.6网络通信的过程

文章目录 4.4网络模型OSI七层参考模型TCP/IP四层模型&#xff08;常用&#xff09;简介四层介绍 4.5协议简介常见协议UDP协议TCP协议IP协议以太网帧协议&#xff08;MAC地址封装&#xff09;ARP协议&#xff08;IP->MAC&#xff09; 4.6网络通信的过程封装分用 4.4网络模型 …...

redis入门3-在java中操作redis

Redis的java客户端 Jedis、Lettuce、Redisson、以及spring提供的spring data redis Jedis操作redis //添加依赖 <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.8.0</version> </dep…...

网络安全预警分类流程

网络安全预警指南 随着信息技术的广泛应用与快速发展&#xff0c;传统业务与信息系统的融合程度不断加深&#xff0c;网络安全对国家政治、经济、文化、公共服务活动的影响进一步增大。网络安全形势日趋复杂&#xff0c;安全威胁不断变化&#xff0c;利用网络漏洞、恶意程序从…...

别再乱装CUDA了!用Anaconda为你的3060 Ti一键搞定PyTorch GPU环境(含CUDA 11.3实战)

3060 Ti显卡玩家的PyTorch环境配置指南&#xff1a;用Anaconda避开CUDA版本地狱 在深度学习领域&#xff0c;GPU加速已经成为提升模型训练效率的标配。然而&#xff0c;对于许多刚入门的开发者来说&#xff0c;配置PyTorch的GPU支持往往成为第一道门槛——尤其是当涉及到CUDA版…...

Wand-Enhancer:免费解锁WeMod专业版功能的终极本地增强工具

Wand-Enhancer&#xff1a;免费解锁WeMod专业版功能的终极本地增强工具 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer 还在为WeMod专业版的高昂订阅费用…...

Go语言缓存雪崩:防止缓存失效

Go语言缓存雪崩&#xff1a;防止缓存失效 1. 雪崩防护 type CacheWithProtection struct {cache *RedisCachemu sync.Mutexlocks map[string]*sync.Mutex }func NewCacheWithProtection(cache *RedisCache) *CacheWithProtection {return &CacheWithProtect…...

基于树莓派与QT Py的本地化物联网红外遥控器DIY指南

1. 项目概述与核心价值想没想过&#xff0c;把家里那堆遥控器——电视的、机顶盒的、空调的、音响的——统统集成到一个你手机能打开的网页里&#xff1f;而且这个控制中心完全在你家局域网里运行&#xff0c;不依赖任何云服务&#xff0c;不用担心厂商倒闭后设备变砖。今天分享…...

基于RP2040的客制化宏键盘:从硬件设计到KMK固件开发全攻略

1. 项目概述与核心价值最近在折腾一个挺有意思的开源项目&#xff0c;叫clawdpad&#xff0c;作者是kudretyilmazz。乍一看这个名字&#xff0c;可能有点摸不着头脑&#xff0c;但如果你对机械键盘、客制化输入设备或者桌面自动化感兴趣&#xff0c;那这个项目绝对值得你花时间…...

ViewTurbo:基于响应式依赖追踪的前端渲染优化方案

1. 项目概述与核心价值最近在折腾一个挺有意思的开源项目&#xff0c;叫 ViewTurbo。这名字听起来就带点“涡轮增压”的劲儿&#xff0c;事实上&#xff0c;它也确实是一个旨在为视图渲染“加速”的工具。简单来说&#xff0c;ViewTurbo 的核心目标&#xff0c;是解决在复杂前端…...

汽车该多久换一代

汽车该多久换一代 买车的人其实不怕四年换代&#xff0c;怕的是刚提车半年就被新款打成旧款。李想这句话能引起讨论&#xff0c;原因也在这里&#xff1a;车企说的是研发验证周期&#xff0c;车主感受到的是价格、配置和二手残值。 汽车确实没法完全照着手机节奏跑。手机坏了可…...

【Clickhouse从入门到精通】第08篇:揭秘ClickHouse为何如此之快——五大设计哲学

上一篇【第07篇】ClickHouse执行引擎架构——Parser、Interpreter与Function体系 下一篇【第09篇】ClickHouse安装部署全攻略——从环境准备到服务启动 摘要 ClickHouse能在十亿行级别数据的聚合查询中实现毫秒级响应&#xff0c;绝非偶然。这种极致性能的背后&#xff0c;是一…...

告别闪烁屏!瑞芯微RK3399开发板Debian系统烧写保姆级教程(含DriverAssistant v5.1.1 + AndroidTool v2.69)

RK3399开发板Debian系统烧写实战&#xff1a;从屏幕闪烁到完美显示的终极解决方案 当你在RK3399开发板上成功烧写Debian系统后&#xff0c;最期待的莫过于看到系统稳定运行的画面。然而&#xff0c;不少开发者却遭遇了屏幕闪烁的困扰——这个问题看似简单&#xff0c;背后却隐藏…...

别再拍脑袋定样本量了!用Excel 5分钟搞定市场调研的样本容量计算(附置信区间模板)

别再拍脑袋定样本量了&#xff01;用Excel 5分钟搞定市场调研的样本容量计算&#xff08;附置信区间模板&#xff09; 在快节奏的商业决策中&#xff0c;市场调研的可靠性往往取决于一个关键数字——样本量。产品经理小张最近就踩了坑&#xff1a;耗时两周完成的500份用户问卷&…...