OpenCVでHSV変換した際のhsv[:,:,0]~hsv[:,:,2](色空間)に関して

2023年3月26日

はじめに

PythonのOpenCVでHSV変換した際に気になったことをまとめます。
HSVは、色を「色相(Hue)」「彩度(Saturation)」「明度(Value)」の3要素で表現する方式です。
そのため、チャンネル数は「3」で「高さ、幅、0~2(チャンネル数)」の三次元配列で表されます。
サンプルは以下です。

hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV_FULL)
h = hsv[:, :, 0]
s = hsv[:, :, 1]
v = hsv[:, :, 2]

「:」なんぞ?

「:」は軸(axis)方向の全範囲を示します。
そのため、以下は「色相(Hue)」の高さ及び幅の全範囲を指定しています。

hsv[:, :, 0]

色相って「0~360」では?

色相って円グラフだし、0~360じゃないの?と思って調べてみました。
下記URLに「H range 0..255」と記載がされているため、0~255で表現される模様です。(たぶん)
https://docs.opencv.org/4.5.3/d8/d01/group__imgproc__color__conversions.html
 Python: cv.COLOR_BGR2HSV_FULL
Python: cv.COLOR_BGR2HSV」には「H range 0..180」とあり、
0~180で表現されるみたいなので、そちらの方が使いやすいかもです。