首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >标记肤色

标记肤色

作者头像
裴来凡
发布2022-05-28 16:06:27
发布2022-05-28 16:06:27
1.6K0
举报
代码语言:javascript
复制
import cv2
img=cv2.imread("C:/Users/xpp/Desktop/image.png")
hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)#将图片从BGR色彩空间转换到HSV色彩空间
h,s,v=cv2.split(hsv)#顺序是h,s,v
minHue=5
maxHue=170
hueMask=cv2.inRange(h,minHue,maxHue)#色调值在[5,170]之间
minSat=25
maxSat=166
satMask=cv2.inRange(s,minSat,maxSat)#饱和度在[25,166]之间
mask=hueMask&satMask
roi=cv2.bitwise_and(img,img,mask=mask)#正常显示感兴趣区域,而将其余区域显示为黑色
cv2.imshow("img",img)
cv2.imshow("ROI",roi)
cv2.waitKey()
cv2.destroyAllWindows()

算法:肤色范围划定为:色调值在[5,170]之间,饱和度值在[25,166]之间(肤色范围根据实际图片设定)。

  • 首先通过inRange函数锁定特定值

dst=cv2.inRange(src, lowerb, upperb)

dst表示输出结果,大小和src一致。

src表示要检查的数组或图像。

lowerb表示范围下界。

upperb表示范围上界。

  • 通过基于掩码的按位与显示ROI
  • 显示特定颜色值

上图是原始图像,图像背景是白色的,下图是提取结果,提取后的图像保留了人像肤色(包含衣服)部分,背景为黑色。

注意:在HSV色彩空间中,H通道(饱和度Hue通道)对应不同的颜色。或者换个角度理解,颜色的差异主要体现在H通道值的不同上。所以,通过对H通道值进行筛选,便能够筛选出特定的颜色。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 图像处理与模式识别研究所 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档