Я знаю, что самый простой способ сегментировать определенный цвет - использовать цветовое пространство HSV, но у меня есть задача сделать это в HSV, RGB и Lab... Я действительно запутался, как это сделать в Lab. Я сделал это в HSV, и это действительно просто. Вот функция, которая сегментирует человеческий цвет, используя цветовое пространство HSV.
import cv2
import matplotlib.pyplot as plt
import numpy as np
def HSV_Segmentation(image):
lowerRange= np.array([0, 70, 0] , dtype="uint8")
upperRange= np.array([25, 255, 255], dtype="uint8")
mask = image[:].copy()
imageHSV = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
imageRange = cv2.inRange(imageHSV,upperRange, lowerRange)
mask[:,:,0] = imageRange
mask[:,:,1] = imageRange
mask[:,:,2] = imageRange
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5))
closing = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel)
faceHSV = cv2.bitwise_and(image,mask)
return faceHSV
И теперь я застрял в цветовом пространстве Lab и не совсем уверен, с чего начать. Я пробовал что-то подобное с верхним и нижним диапазоном человеческого цвета, но, очевидно, это неправильный путь.