Python人体肤色区域提取

单张图片处理

import cv2
import matplotlib.pyplot as plt

# 肤色检测之一: YCrCb之Cr分量 + OTSU二值化
imname = './hand/0.jpg'
img = cv2.imread(imname, cv2.IMREAD_COLOR)
ori = cv2.imread(imname, cv2.COLOR_BGR2RGB)
ycrcb = cv2.cvtColor(img, cv2.COLOR_BGR2YCrCb)  # 把图像转换到YUV色域
(y, cr, cb) = cv2.split(ycrcb)  # 图像分割, 分别获取y, cr, br通道图像

# 高斯滤波, cr 是待滤波的源图像数据, (5,5)是值窗口大小, 0 是指根据窗口大小来计算高斯函数标准差
cr1 = cv2.GaussianBlur(cr, (5, 5), 0)  # 对cr通道分量进行高斯滤波
# 根据OTSU算法求图像阈值, 对图像进行二值化
_, skin = cv2.threshold(cr1, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
hand = cv2.bitwise_and(ori, ori, mask=skin)
plt.imshow(hand)
plt.show()

上面这行代码能对人体各个部位肤色区域提取,下面例子是手掌

效果:
0.jpg(原始图片)

Python人体肤色区域提取_第1张图片

提取肤色后:

Python人体肤色区域提取_第2张图片

参考:https://www.cnblogs.com/demodashi/p/9437559.html

你可能感兴趣的:(python,opencv,计算机视觉)