Skip to content

hsv_ycrcb

hsv_ycrcb

HSVandYCrCbSkinSegmentation

Bases: SkinSegmentation

A class for skin segmentation using HSV and YCrCb color spaces.

Source code in redesign_pipeline/skin_segmentation/hsv_ycrcb.py
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
class HSVandYCrCbSkinSegmentation(SkinSegmentation):
    """
    A class for skin segmentation using HSV and YCrCb color spaces.
    """

    def __init__(self):
        super().__init__()

    def extraction_mask(self,img,results):
        """
        Generate a skin extraction mask based on HSV and YCrCb color spaces.

        Args:
            img (numpy.ndarray): Input image.
            results: Unused argument.

        Returns:
            numpy.ndarray: Skin extraction mask.
        """

        #converting from gbr to hsv color space
        img_HSV = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
        #skin color range for hsv color space 
        HSV_mask = cv2.inRange(img_HSV, (0, 15, 0), (17,170,255)) 
        HSV_mask = cv2.morphologyEx(HSV_mask, cv2.MORPH_OPEN, np.ones((3,3), np.uint8))

        #converting from gbr to YCbCr color space
        img_YCrCb = cv2.cvtColor(img, cv2.COLOR_BGR2YCrCb)
        #skin color range for hsv color space 
        YCrCb_mask = cv2.inRange(img_YCrCb, (0, 135, 85), (255,180,135)) 
        YCrCb_mask = cv2.morphologyEx(YCrCb_mask, cv2.MORPH_OPEN, np.ones((3,3), np.uint8))

        #merge skin detection (YCbCr and hsv)
        global_mask=cv2.bitwise_and(YCrCb_mask,HSV_mask)
        global_mask=cv2.medianBlur(global_mask,3)
        global_mask = cv2.morphologyEx(global_mask, cv2.MORPH_OPEN, np.ones((4,4), np.uint8))

        return global_mask

extraction_mask(img, results)

Generate a skin extraction mask based on HSV and YCrCb color spaces.

Parameters:

Name Type Description Default
img numpy.ndarray

Input image.

required
results

Unused argument.

required

Returns:

Type Description

numpy.ndarray: Skin extraction mask.

Source code in redesign_pipeline/skin_segmentation/hsv_ycrcb.py
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
def extraction_mask(self,img,results):
    """
    Generate a skin extraction mask based on HSV and YCrCb color spaces.

    Args:
        img (numpy.ndarray): Input image.
        results: Unused argument.

    Returns:
        numpy.ndarray: Skin extraction mask.
    """

    #converting from gbr to hsv color space
    img_HSV = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
    #skin color range for hsv color space 
    HSV_mask = cv2.inRange(img_HSV, (0, 15, 0), (17,170,255)) 
    HSV_mask = cv2.morphologyEx(HSV_mask, cv2.MORPH_OPEN, np.ones((3,3), np.uint8))

    #converting from gbr to YCbCr color space
    img_YCrCb = cv2.cvtColor(img, cv2.COLOR_BGR2YCrCb)
    #skin color range for hsv color space 
    YCrCb_mask = cv2.inRange(img_YCrCb, (0, 135, 85), (255,180,135)) 
    YCrCb_mask = cv2.morphologyEx(YCrCb_mask, cv2.MORPH_OPEN, np.ones((3,3), np.uint8))

    #merge skin detection (YCbCr and hsv)
    global_mask=cv2.bitwise_and(YCrCb_mask,HSV_mask)
    global_mask=cv2.medianBlur(global_mask,3)
    global_mask = cv2.morphologyEx(global_mask, cv2.MORPH_OPEN, np.ones((4,4), np.uint8))

    return global_mask