Python, OpenCVでRGBとHSVを相互変換
動作環境
- OpenCV 2.4.8
OpenCVでRGBとHSVを相互変換
画像のRGBとHSVをまるごと変換するにはcv2.cvtColor
をそのまま使えばよいのですが、こちらはRGBとHSVの値を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)