数字图像学笔记 —— 19.肤色检测

news2024/11/26 12:14:50

文章目录

  • 什么是肤色检测
  • 需要使用OpenCV函数
    • 颜色空间转换
    • 颜色范围
    • 位运算

什么是肤色检测

在没有AI之前,肤色检测是计算机视觉的一项常见任务。其根本思路是划定一个颜色区域,只要属于该颜色区域的像素就认为属于肤色。但是这种方法的精确度不高,并且常常有错误的区域被误认为皮肤。

尽管AI或者机器学习已经能够很好的从图片中识别出肤色部分。但是作为经典图像学任务,我想了想还是花点时间介绍肤色的常见识别算法。因此,在本文中我们介绍其中一种方法,将RGB图像转换到HSV色彩空间,然后在HSV空间中设置适当的阈值以检测肤色。

关于RGB转HSV颜色空间的相关算法,可以如果有需要的话,可以参考我之前写的这篇文章:《数字图像学笔记——1. 常用颜色空间转换》

请注意,这种方法可能会受到光照条件、人种、图像质量等因素的影响,可能需要进行一些调整才能在特定的应用场景中达到最佳效果。

需要使用OpenCV函数

颜色空间转换

    # Convert image to HSV
    hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)

这部分转化非常简单,通常只需要用 cvtColor 这个函数完成彩色RGB图片转HSV。

另一个需要用到的函数是

颜色范围

我们需要用告知OpenCV,在HSV空间,可用的肤色范围,大概是

    # Define range for skin color in HSV
    lower_skin = np.array([0, 20, 70], dtype=np.uint8)
    upper_skin = np.array([20, 255, 255], dtype=np.uint8)

    # Threshold the HSV image to get only skin colors
    skin_mask = cv2.inRange(hsv_image, lower_skin, upper_skin)

然后使用 inRange 这样我们可以生成一个掩码,然后我们让这个掩码和原图进行位运算,于是

位运算

这里,我们用到的是 bitwise_and 函数,选取在该范围内的像素

    # Bitwise-AND mask and original image
    skin = cv2.bitwise_and(image, image, mask=skin_mask)

然后把上面这些代码合在一起,得到了重要的肤色计算函数

def skin_detection(image):
    # Convert image to HSV
    hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)

    # Define range for skin color in HSV
    lower_skin = np.array([0, 20, 70], dtype=np.uint8)
    upper_skin = np.array([20, 255, 255], dtype=np.uint8)

    # Threshold the HSV image to get only skin colors
    skin_mask = cv2.inRange(hsv_image, lower_skin, upper_skin)

    # Bitwise-AND mask and original image
    skin = cv2.bitwise_and(image, image, mask=skin_mask)

    return skin, skin_mask

然后我们把原图和结果都画出来,就可以得到最后的效果了。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/765504.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

nodejs调取exe执行文件连接websocket

最近有个需求,就是需要前端调取一个封装成exe文件的websoket服务。 很显然,在浏览器的框架下,根本不可能完成这个事情。以为浏览器的沙盒机制和安全策略,是不允许读取本地文件的。 所以,我们需要nodejs的帮助。 那么…

企业应如何做好软件供应链安全管理?

随着软件供应链攻击日益普遍,Gartner 将其列为2022 年的第二大威胁。Gartner 预测,到 2025 年,全球 45% 的组织将遭受一次或多次软件供应链攻击,是2021年的3倍。这些攻击一旦成功,将给企业带来毁灭性打击,因…

mmdet3d预处理(下)| train pipeline

mmdet3d预处理(下)—— train pipeline 文章目录 mmdet3d预处理(下)—— train pipeline基类 BaseTransformLoadPointsFromFileLoadAnnotations3D标签信息:源码 ObjectSample源码 ObjectNoise输入参数源码RandomFlip3D…

【FFNN负荷预测】基于人工神经网络的空压机负荷预测(Matlab代码实现)

📋📋📋本文目录如下:🎁🎁🎁 目录 💥1 概述 📚2 运行结果 2.1 算例1 2.2 算例2 2.3 算例3 🎉3 参考文献 🌈4 Matlab代码、数据、文章 &#x1f4a…

Ubuntu下搭建Vue开发环境,开发第一个程序并部署

Vue.js目前是前端技术比较火热的开发框架,是一个基于JavaScript的前端开发框架,它可以轻松地构建大型的单页面应用程序。因为项目需要在此记录一下Ubuntu下如何搭建Vue开发环境。 目录 1.nodejs npm安装 2.安装CNMP(非必要) …

Argo CD 入门扫盲使用

目录 一、什么是 argo cd 二、为什么使用 argo cd 三、argo cd 架构图 四、Argo CD 使用 1、安装 Argo CD 2、安装 Argo CD CLI 3、发布 Argo CD 服务 4、获取 Argo CD 密码 5、准备 Git 仓库 6、创建 Argo CD App 7、版本升级 8、版本回滚 一、什么是 argo cd A…

S_Tide使用总结(1)函数及数据

1、使用增强调和分析(EHA)计算实测潮位的调和常数,不考虑交点改正。 % s_tide.m - computes the tidal analysis of the real tidal % time series using Enhanced Harmonic Analysis (EHA) without nodal correcti…

Web 3.0时代,重塑教育与学习方式的可能性

随着科技的快速发展和互联网的普及,教育领域也面临着巨大的机遇和挑战。Web 3.0时代的到来为教育与学习方式带来了全新的可能性。在这个数字化时代,我们可以探索和利用Web 3.0技术,重塑教育的方式,提供更个性化、互动性和灵活性的…

数控机床编程与操作

一、数控机床 的产生 常见数控机床: 数控车床 数控铣床 加工中心 多轴数控机床 柔性制造单元 数控线切割机床 二、数控机床的发展历程 第一代 1952年-1959年 电 子管的硬件数控系统 第二代1959年-1965年 晶体管电路为主的硬件数控系统 第三代1965年开始 小、中规模集成电路…

HIVE SQL 根据主键去重并实现其余字段分组聚合

相同个人id下所有字段按时间顺序补位,取首个不为空值 --数据建表 drop table if exists db.tb_name; create table if not exists db.tb_name ( id string,name string,tele string,email string,date string ) ; insert overwrite table db.tb_name values (&qu…

Redis实战案例18-Redisson的锁重试和watchdog机制

1. 锁重试 首先要理解为什么要进行锁重试,之前我们在获取锁时,只要一次获取失败就直接返回false,这样的机制需要进行修改; 尝试获取锁的底层逻辑是 返回锁的有效期(null或者其他值); 为null然后…

大数据第一步-Mac安装Hadoop3

1.安装工作 1.1 准备工作 前提是把jJDK8安装好,hadoop3.x最低需要jdk8。 然后打开共享把远程登陆打开,不打开说是后面会报错, 到终端输入命令:ssh localhost 生成新的keygen否则后面会报错 Permission denied 命令:…

SAP/ABAP(二)

一、循环结构 *&---------------------------------------------------------------------* *& Report ZDEMO_LIMING01 *&---------------------------------------------------------------------* *&作者:黎明 *&--------------------------…

DBISAM Client-Server Crack

您是否需要经过验证且可靠的 BDE(Borland 数据库引擎)替代品? DBISAM是Delphi或CBuilder应用中替代BDE的标准。它已被部署到全球数千个地点,并且可以打上品牌,以至于没有人知道正在使用DBISAM。它是按开发人员许可的&a…

创建型模式 - 工厂模式

概述 需求:设计一个咖啡店点餐系统。 设计一个咖啡类(Coffee),并定义其两个子类(美式咖啡【AmericanCoffee】和拿铁咖啡【LatteCoffee】);再设计一个咖啡店类(CoffeeStore&#xf…

Sa-Token + SpringBoot 实现登录鉴权

1. 技术选型 今天最近在做登录、授权的功能,一开始考虑到的是spring boot + spring security,但spring security太重,而我们是轻量级的项目,所以,spring security不适合我们。 而后考虑spring boot + shiro,但shiro自带的aop会影响spring boot的aop,所以,shiro也不适…

等保测评包过是真的吗?安全吗?

最近有小伙伴在问,等保测评包过是真的吗?安全吗?哪位大哥来解答一下? 等保测评包过是真的吗?安全吗? 【回答】:等级保护采用备案与测评机制,而非认证机制,因此不存在“包…

uni-app:常见组件view、text、icon

根据html:可知div是块级标签,span是行级标签 这里view类似于div,text类似于span,即 块级标签:view 行级标签:text、icon 类似效果 两个icon图标,置于第一排 两个view,分别位于第…

四维轻云地理空间数据在线协作管理平台为测绘行业用户解决了这些难题

测绘作为一个基础性行业,从大比例的地形图到铁路网、公路网的分布,再到互联网地图,测绘的身影随处可见。随着科技的不断发展与进步,无人机也成为测绘行业的一部分。通过无人机测绘技术能够获取高精度的影像数据并生成三维模型和点…

华菱电子冲刺创业板上市:计划募资6.5亿元,总经理为日本国籍

7月17日,深圳证券交易所披露的信息显示,已对山东华菱电子股份有限公司(下称“华菱电子”)发出第1轮审核问询函。目前,华菱电子在深圳证券交易所的审核状态已经变更为“已问询”。 根据公开信息,华菱电子于2…