Мини-урок · перед практикой
HSV: маска голубого неба
Выделите голубые и синие участки неба; белые облака с низкой насыщенностью не должны попасть в эту маску.
Как к ней подойти
Научитесь читать изображение как массив пикселей и проверять результат преобразования.
Коротко о теме
Изображение в 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, (90, 50, 50), (130, 255, 255))
mask = mask0
result = mask
cv2.imwrite('output.png', result)
Время: O(H × W). Память: O(H × W).