Чтобы преобразовать изображение RGB в цветовое пространство HSV (оттенок, насыщенность, значение) с помощью OpenCV в Python, вы можете использовать следующие методы:
Метод 1: использование функции cv2.cvtColor()
import cv2
# Load the RGB image
image = cv2.imread('image.jpg')
# Convert RGB to HSV
hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
Метод 2: преобразование вручную с использованием математических формул
import numpy as np
# Load the RGB image
image = cv2.imread('image.jpg')
# Convert RGB to HSV
r, g, b = image[:, :, 0], image[:, :, 1], image[:, :, 2]
r, g, b = r / 255.0, g / 255.0, b / 255.0
max_value = np.max(image, axis=2)
min_value = np.min(image, axis=2)
delta = max_value - min_value
# Compute hue
hue = np.zeros_like(max_value)
hue[max_value == min_value] = 0
hue[max_value == r] = (60 * ((g[max_value == r] - b[max_value == r]) / delta[max_value == r]) % 6)
hue[max_value == g] = (60 * ((b[max_value == g] - r[max_value == g]) / delta[max_value == g]) + 2)
hue[max_value == b] = (60 * ((r[max_value == b] - g[max_value == b]) / delta[max_value == b]) + 4)
hue *= 60
# Compute saturation
saturation = np.zeros_like(max_value)
saturation[max_value != 0] = (delta[max_value != 0] / max_value[max_value != 0]) * 255
# Compute value
value = max_value
# Combine channels
hsv_image = np.stack((hue, saturation, value), axis=2).astype(np.uint8)