HSV: яблоки на чёрном фоне
Вы решили задачу. Теперь можно сравнить подходы.
Сохраните исходные BGR-цвета зелёных участков яблок, а остальные пиксели сделайте чёрными. В этой задаче результат — цветная фотография, а не чёрно-белая маска.
Авторский разбор для локальной версии на основе условия задачи. Это не выгрузка чужих посылок и не официальное решение исходного сайта.
Ваше принятое решение
Рекомендуемое решение: Цветовая маска HSV
Преобразуем BGR в HSV, проверяем включительные границы каналов и сохраняем исходные цвета под маской.
import cv2
import numpy as np
image = cv2.imread('input.png')
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
mask0 = cv2.inRange(hsv, (25, 80, 40), (85, 255, 255))
mask = mask0
result = cv2.bitwise_and(image, image, mask=mask)
cv2.imwrite('output.png', result)
Время: O(H × W). Память: O(H × W).
На что обратить внимание
- Не путайте RGB с BGR: cv2.imread возвращает BGR.
- У OpenCV оттенок H заканчивается на 179, не на 255.
- Цветовая маска выделяет пиксели, а не распознаёт предметы.
Рекомендация учитывает сложность и читаемость для этой задачи. Единственного самого быстрого решения для всех размеров входа и всех компьютеров может не быть.