Как вы удерживаете легкость с помощью HSL на OpenCV?

Есть проект, над которым я работаю, для которого требуется обнаружение белого цвета, после некоторых исследований я решил использовать скрытое изображение RGB для изображения HSL и удерживать яркость, чтобы получить белый цвет, я работаю с openCV, поэтому интересно, есть ли способ сделать это. введите здесь описание изображения


person Minh Cht    schedule 10.01.2018    source источник
comment
в opencv это HLS, и обычно изображения загружаются как BGR в OpenCV. взгляните на cvtColor.   -  person api55    schedule 10.01.2018
comment
Да, мне удалось преобразовать BGR в HLS, но я застрял в том, как отфильтровать пиксель со слишком низким атрибутом яркости, чтобы изображение осталось с оттенком белого цвета.   -  person Minh Cht    schedule 10.01.2018
comment
используйте разделение для разделения каналов (или с помощью нарезки numpy), затем используйте порог в L (второй канал), и вы получите с ним маску, а затем примените маску к исходному изображению. Если вы разместите пример изображения, я могу попытаться дать полный ответ   -  person api55    schedule 10.01.2018


Ответы (1)


Вы можете сделать это, выполнив 4 простых шага:

Конвертировать HLS

img = cv2.imread("HLS.png")
imgHLS = cv2.cvtColor(img, cv2.COLOR_BGR2HLS)

Получить L-канал

Lchannel = imgHLS[:,:,1]

Создайте маску

#change 250 to lower numbers to include more values as "white"
mask = cv2.inRange(Lchannel, 250, 255)

Применить маску к исходному изображению

res = cv2.bitwise_and(img,img, mask= mask)

Это также зависит от того, что для вас белое, и вы можете изменить значения :) Я использовал inRange в канале L, но вы можете сохранить один шаг и сделать

mask = cv2.inRange(imgHLS, np.array([0,250,0]), np.array([255,255,255]))

вместо строк:

Lchannel = imgHLS[:,:,1]
mask = cv2.inRange(Lchannel, 250, 255)

Это короче, но сначала я сделал это другим способом, чтобы сделать его более явным и показать, что я делаю.

Изображение:

введите описание изображения здесь

Результат:

введите описание изображения здесь

Результат выглядит почти как маска (почти бинарная), но в зависимости от вашей нижней границы (я выбрал 250) вы можете получить даже почти белые цвета.

person api55    schedule 10.01.2018