获取皮肤范围
在HSV色彩空间中,H通道对应不同颜色。颜色的差异主要取决于H通道值,所以通过筛选H通道值就能筛选出特定的颜色。例如在一幅HSV图像中,如果通过控制仅将H通道内值为240(在Opencv内被调整为120)的像素点显示出来,那么就会只显示蓝色部分图像。
本节将通过具体例题展示如何将图像内的特定颜色标记出来,即将一幅图像内的其他颜色屏蔽,仅将特定颜色显示出来。
Opencv通过函数cv2.inRange()来判断图像内像素点的像素值是否在指定的范围内。
标记特定颜色,即可标注改颜色对应的特定对象,如通过分析可以估算出肤色在HSV色彩空间内筛选出皮肤范围内的值
这里将肤色划分为:
色调值为[0,33]
饱和度为[10,255]
明度为[80,255]
import cv2
import numpy as np
img = cv2.imread('D:/PixC/01.jpeg')
hsv = cv2.cvtColor(img,cv.COLOR_BGR2HSV)
min_hsv = np.array([0,10,80],dtype='uint8')
max_hsv = np.array([33,255,255],dtype='uint8')
print(max_hsv)
mask = cv.inRange(hsv,min_hsv,max_hsv)
result = cv.bitwise_and(img,img,mask=mask)
cv2.imshow('img',img)
cv2.imshow('result',result)
cv2.waitKey()
cv2.destr