Как удалить L-канал из Lab Image - PullRequest
2 голосов
/ 01 октября 2019

Мне нужно получить изображение лаборатории, но без l-канала. Либо удалив l-канал, либо разделив все три канала вверх и объединив a- и b-канал обратно вместе.

Мой код до сих пор (даже где-то рядом с решением этой проблемы):

lab_image = cv2.cvtColor(numpy.array(color_images_array)[i], cv2.COLOR_RGB2LAB)

_, a, b = cv2.split(lab_image)

Этот код только разделяет каналы, но не объединяет a- и b-канал ...

Ответы [ 3 ]

3 голосов
/ 01 октября 2019

cv2.split отделяет каналы от изображения. Вы должны вызвать функцию cv2.merge, чтобы объединить их.

merged = cv2.merge((a,b))
2 голосов
/ 01 октября 2019

Вы можете использовать функцию cv2.merge(). Правильный синтаксис:

merged = cv2.merge( (channel_1,channel_2,...) )

В вашем случае:

merged = cv2.merge((a,b))
0 голосов
/ 01 октября 2019

Вы можете просто использовать функцию Numpy delete(), чтобы удалить первый канал (индекс = 0) на 3-й оси (ось = 2) - причем первая ось соответствует столбцам, вторая ось соответствует строкам, а третья ось соответствует каналам:

# Delete "L" channel from Lab image
ab = np.delete(lab_image, 0, 2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...