Как получить HSV и LAB цветовое пространство?

Я использую OpenCV с Python. Мой код:

img_hsv = cv2.cvtColor(image,cv.CV_BGR2HSV)
img_lab = cv2.cvtColor(image,cv.CV_BGR2Lab)

Когда я получаю доступ к значению пикселя, я получаю значения в RGB-пространстве, например:

img_hsv[x][y] = [255,255,255]

Как я могу нормализовать цветовое пространство HSV и LAB? HSV = 360º 100% 100% и LAB = 128 100 100

Edit1. Ответ Рику М.: Ваше решение неверно, потому что когда я перевожу значения OpenCV, как вы сказали HSV, я получаю случайные цвета.

Например. Обнаружение исходного изображения со значениями img_hsv: Значения HSV от OpenCV

Если я получаю эти значения и меняю порядок, я получаю значения RGB: введите описание изображения здесь

HSV Value = 16, 25, 230 -> Invert -> 230, 25, 16 = RGB Value
HSV Value = 97, 237, 199 -> Invert -> 199, 237, 97 = RGB Value

Итак, когда я получаю значения img_hsv, если я инвертирую порядок, я получаю значение RGB... Что делает OpenCV в img_hsv = cv2.cvtColor(image,cv.CV_BGR2HSV) затем? Я думаю, что OpenCV возвращает значения BGR...

1 ответ

Решение

OpenCV выводит выходные данные всех цветовых пространств в диапазоне (0, 255). Примечание: Это зависит от типа мата, предполагая, 8UC3 здесь

Итак, чтобы довести HSV до своего ассортимента:

H(HSV original) = H(OpenCV) * 2.0
S(HSV original) = S(OpenCV) * 100/255.0

V(HSV original) = V(OpenCV) * 100/255.0

аналогично для цветового пространства Lab:

L(Lab original) = L(OpenCV) * 100/255.0

a(Lab original) = a(OpenCV) - 128

b(Lab original) = b(OpenCV) - 128

Ссылка

Добавление чека, реального преобразования цветов, кода Python:

image_rgb = np.zeros((300, 300, 3), np.uint8)
image[:] = (255, 255, 255)

img_hsv = cv2.cvtColor(image_rgb, cv2.COLOR_RGB2HSV)
h = img_hsv[100, 100, 0]
s = img_hsv[100, 100, 1]
v = img_hsv[100, 100, 2]
print h , s , v
>>> 0 0 255
Другие вопросы по тегам