Yura YuLife

ITエンジニアの覚え書き。

Python, OpenCVでRGBとHSVを相互変換

動作環境

OpenCVRGBHSVを相互変換

画像のRGBHSVをまるごと変換するにはcv2.cvtColorをそのまま使えばよいのですが、こちらはRGBHSVの値を1ピクセルだけ変換するためのラッパー関数です。

import numpy as np
import cv2


def hsv_to_rgb(h, s, v):
    bgr = cv2.cvtColor(np.array([[[h, s, v]]], dtype=np.uint8), cv2.COLOR_HSV2BGR)[0][0]
    return (bgr[2], bgr[1], bgr[0])


def rgb_to_hsv(r, g, b):
    hsv = cv2.cvtColor(np.array([[[b, g, r]]], dtype=np.uint8), cv2.COLOR_BGR2HSV)[0][0]
    return (hsv[0], hsv[1], hsv[2])
>>> hsv_to_rgb(0, 255, 255)
(255, 0, 0)
>>> hsv_to_rgb(60, 255, 255)
(0, 255, 0)
>>> hsv_to_rgb(120, 255, 255)
(0, 0, 255)
>>> rgb_to_hsv(255, 0, 0)
(0, 255, 255)
>>> rgb_to_hsv(0, 255, 0)
(60, 255, 255)
>>> rgb_to_hsv(0, 0, 255)
(120, 255, 255)