opencv椭圆检测python_python opencv肤色检测的实现示例

本文详细介绍了使用OpenCV在Python中实现肤色检测的四种方法:1) 椭圆肤色检测模型,通过YCRCB颜色空间定义椭圆模型进行检测;2) YCrCb颜色空间的Cr分量结合Otsu法阈值分割算法;3) 基于YCrCb颜色空间Cr和Cb范围筛选法;4) HSV颜色空间的H,S,V范围筛选法。并给出了相应的代码示例。" 128628435,7361412,Elastic-Job高级特性:事件追踪与运维,"['分布式', '大数据', '任务调度']
摘要由CSDN通过智能技术生成

1 椭圆肤色检测模型

原理:将RGB图像转换到YCRCB空间,肤色像素点会聚集到一个椭圆区域。先定义一个椭圆模型,然后将每个RGB像素点转换到YCRCB空间比对是否再椭圆区域,是的话判断为皮肤。

YCRCB颜色空间

38487278ffd12650706a2cdf6929033d.gif

71373bf49710c0d346c11d59703c7d2f.png

椭圆模型

1b3a402e6976d7d187d4dbbc6993838a.png

代码

def ellipse_detect(image):

"""

:param image: 图片路径

:return: None

"""

img = cv2.imread(image,cv2.IMREAD_COLOR)

skinCrCbHist = np.zeros((256,256), dtype= np.uint8 )

cv2.ellipse(skinCrCbHist ,(113,155),(23,15),43,0, 360, (255,255,255),-1)

YCRCB = cv2.cvtColor(img,cv2.COLOR_BGR2YCR_CB)

(y,cr,cb)= cv2.split(YCRCB)

skin = np.zeros(cr.shape, dtype=np.uint8)

(x,y)= cr.shape

for i in range(0,x):

for j in range(0,y):

CR= YCRCB[i,j,1]

CB= YCRCB[i,j,2]

if skinCrCbHist [CR,CB]>0:

skin[i,j]= 255

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值