Мини-урок · перед практикой
HSV: Луна на вечернем небе
Отделите светлые малонасыщенные участки Луны от неба. Здесь важнее насыщенность S и яркость V, чем оттенок H.
Как к ней подойти
Научитесь читать изображение как массив пикселей и проверять результат преобразования.
Коротко о теме
Изображение в OpenCV - массив пикселей, а порядок цветовых каналов при чтении обычно BGR. Операции могут менять размер, тип данных и число каналов; проверьте все три свойства перед сохранением результата.
Ключевая идея · Цветовая маска HSV
Преобразуем BGR в HSV, проверяем включительные границы каналов и сохраняем маску 0/255.
Проверьте перед запуском
- Не путайте RGB с BGR: cv2.imread возвращает BGR.
- У OpenCV оттенок H заканчивается на 179, не на 255.
- Цветовая маска выделяет пиксели, а не распознаёт предметы.
После практики
Сравните свой подход
Ниже - готовое решение, другой способ, если он есть, и важные детали проверки.
Ваше принятое решение
Рекомендуемое решение: Цветовая маска HSV
Преобразуем BGR в HSV, проверяем включительные границы каналов и сохраняем маску 0/255.
import cv2
import numpy as np
image = cv2.imread('input.png')
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
mask0 = cv2.inRange(hsv, (0, 0, 120), (179, 90, 255))
mask = mask0
result = mask
cv2.imwrite('output.png', result)
Время: O(H × W). Память: O(H × W).