OpenCV Color spaces
Ref: https://docs.opencv.org/master/
BGR, RGB, YUV, HSV 등은 8 bits 3 채널로 픽셀마다 24 bits 값을 갖고, Grayscale은 8 bits 1 채널로 픽셀마다 8 bits 값을 갖습니다.
알파채널이 추가된 RGBA 등은 8 bits 4 채널로 픽셀마다 32 bits 값을 갖습니다.
이미지 배열은 (가로, 세로, 채널) 3 차원 배열로 이루어져있고, 1 채널 이미지의 경우 (가로, 세로) 2 차원 배열로 표현할 수 있습니다.
BGR 3 채널이 기본으로 사용됩니다.
예를 들어 400x400 빨간색 빈 이미지를 생성하고 싶을 때, 아래와 같은 코드를 이용할 수 있습니다.
import cv2 as cv
import numpy as np
image = np.zeros((400,400,3), dtype=np.uint8)
image[:,:,2] = 255
cv.imshow('red', image)
cv.waitKey()
BGR
import cv2 as cv
import numpy as np
bgr_image = np.array([[[255, 0, 0],[ 0,255, 0],[ 0, 0,255]],
[[255,255, 0],[255, 0,255],[ 0,255,255]]],
dtype=np.uint8)
cv.imshow('bgr', bgr_image)
cv.waitKey()

Grayscale
import cv2 as cv
import numpy as np
gray_image = np.array([[ 0,127,255],
[255,127, 0]],
dtype=np.uint8)
cv.imshow('gray', gray_image)
cv.waitKey()

RGB, HSV, HSL 색 공간
- Hue(색상) : 8 bits로 볼때 R=0(0), G=60(120), B=120(240)
- Saturation(채도)
- Value(명도)
- Lightness(밝기)

색 공간(color space) 변환
dst = cv.cvtColor(src, code, dst=None, dstCn=0)
- @brief src 색 공간을 code에 따라 변환한 후, dst로 반환
- @param src: np.ndarray
- @param dstCn: 0 으로 설정할 경우 src와 code에 따라 자동 설정
- @param code
cv.COLOR_BGR2BGRA= 0cv.COLOR_RGB2RGBA= COLOR_BGR2BGRAcv.COLOR_BGRA2BGR= 1cv.COLOR_RGBA2RGB= COLOR_BGRA2BGRcv.COLOR_BGR2RGBA= 2cv.COLOR_RGB2BGRA= COLOR_BGR2RGBAcv.COLOR_RGBA2BGR= 3cv.COLOR_BGRA2RGB= COLOR_RGBA2BGRcv.COLOR_BGR2RGB= 4cv.COLOR_RGB2BGR= COLOR_BGR2RGBcv.COLOR_BGRA2RGBA= 5cv.COLOR_RGBA2BGRA= COLOR_BGRA2RGBAcv.COLOR_BGR2GRAY= 6cv.COLOR_RGB2GRAY= 7cv.COLOR_GRAY2BGR= 8cv.COLOR_GRAY2RGB= COLOR_GRAY2BGRcv.COLOR_GRAY2BGRA= 9cv.COLOR_GRAY2RGBA= COLOR_GRAY2BGRAcv.COLOR_BGRA2GRAY= 10cv.COLOR_RGBA2GRAY= 11cv.COLOR_BGR2BGR565= 12cv.COLOR_RGB2BGR565= 13cv.COLOR_BGR5652BGR= 14cv.COLOR_BGR5652RGB= 15cv.COLOR_BGRA2BGR565= 16cv.COLOR_RGBA2BGR565= 17cv.COLOR_BGR5652BGRA= 18cv.COLOR_BGR5652RGBA= 19cv.COLOR_GRAY2BGR565= 20cv.COLOR_BGR5652GRAY= 21cv.COLOR_BGR2BGR555= 22cv.COLOR_RGB2BGR555= 23cv.COLOR_BGR5552BGR= 24cv.COLOR_BGR5552RGB= 25cv.COLOR_BGRA2BGR555= 26cv.COLOR_RGBA2BGR555= 27cv.COLOR_BGR5552BGRA= 28cv.COLOR_BGR5552RGBA= 29cv.COLOR_GRAY2BGR555= 30cv.COLOR_BGR5552GRAY= 31cv.COLOR_BGR2XYZ= 32cv.COLOR_RGB2XYZ= 33cv.COLOR_XYZ2BGR= 34cv.COLOR_XYZ2RGB= 35cv.COLOR_BGR2YCrCb= 36cv.COLOR_RGB2YCrCb= 37cv.COLOR_YCrCb2BGR= 38cv.COLOR_YCrCb2RGB= 39cv.COLOR_BGR2HSV= 40cv.COLOR_RGB2HSV= 41cv.COLOR_BGR2Lab= 44cv.COLOR_RGB2Lab= 45cv.COLOR_BGR2Luv= 50cv.COLOR_RGB2Luv= 51cv.COLOR_BGR2HLS= 52cv.COLOR_RGB2HLS= 53cv.COLOR_HSV2BGR= 54cv.COLOR_HSV2RGB= 55cv.COLOR_Lab2BGR= 56cv.COLOR_Lab2RGB= 57cv.COLOR_Luv2BGR= 58cv.COLOR_Luv2RGB= 59cv.COLOR_HLS2BGR= 60cv.COLOR_HLS2RGB= 61cv.COLOR_BGR2HSV_FULL= 66cv.COLOR_RGB2HSV_FULL= 67cv.COLOR_BGR2HLS_FULL= 68cv.COLOR_RGB2HLS_FULL= 69cv.COLOR_HSV2BGR_FULL= 70cv.COLOR_HSV2RGB_FULL= 71cv.COLOR_HLS2BGR_FULL= 72cv.COLOR_HLS2RGB_FULL= 73cv.COLOR_LBGR2Lab= 74cv.COLOR_LRGB2Lab= 75cv.COLOR_LBGR2Luv= 76cv.COLOR_LRGB2Luv= 77cv.COLOR_Lab2LBGR= 78cv.COLOR_Lab2LRGB= 79cv.COLOR_Luv2LBGR= 80cv.COLOR_Luv2LRGB= 81cv.COLOR_BGR2YUV= 82cv.COLOR_RGB2YUV= 83cv.COLOR_YUV2BGR= 84cv.COLOR_YUV2RGB= 85cv.COLOR_YUV2RGB_NV12= 90cv.COLOR_YUV2BGR_NV12= 91cv.COLOR_YUV2RGB_NV21= 92cv.COLOR_YUV2BGR_NV21= 93cv.COLOR_YUV420sp2RGB= COLOR_YUV2RGB_NV21cv.COLOR_YUV420sp2BGR= COLOR_YUV2BGR_NV21cv.COLOR_YUV2RGBA_NV12= 94cv.COLOR_YUV2BGRA_NV12= 95cv.COLOR_YUV2RGBA_NV21= 96cv.COLOR_YUV2BGRA_NV21= 97cv.COLOR_YUV420sp2RGBA= COLOR_YUV2RGBA_NV21cv.COLOR_YUV420sp2BGRA= COLOR_YUV2BGRA_NV21cv.COLOR_YUV2RGB_YV12= 98cv.COLOR_YUV2BGR_YV12= 99cv.COLOR_YUV2RGB_IYUV= 100cv.COLOR_YUV2BGR_IYUV= 101cv.COLOR_YUV2RGB_I420= COLOR_YUV2RGB_IYUVcv.COLOR_YUV2BGR_I420= COLOR_YUV2BGR_IYUVcv.COLOR_YUV420p2RGB= COLOR_YUV2RGB_YV12cv.COLOR_YUV420p2BGR= COLOR_YUV2BGR_YV12cv.COLOR_YUV2RGBA_YV12= 102cv.COLOR_YUV2BGRA_YV12= 103cv.COLOR_YUV2RGBA_IYUV= 104cv.COLOR_YUV2BGRA_IYUV= 105cv.COLOR_YUV2RGBA_I420= COLOR_YUV2RGBA_IYUVcv.COLOR_YUV2BGRA_I420= COLOR_YUV2BGRA_IYUVcv.COLOR_YUV420p2RGBA= COLOR_YUV2RGBA_YV12cv.COLOR_YUV420p2BGRA= COLOR_YUV2BGRA_YV12cv.COLOR_YUV2GRAY_420= 106cv.COLOR_YUV2GRAY_NV21= COLOR_YUV2GRAY_420cv.COLOR_YUV2GRAY_NV12= COLOR_YUV2GRAY_420cv.COLOR_YUV2GRAY_YV12= COLOR_YUV2GRAY_420cv.COLOR_YUV2GRAY_IYUV= COLOR_YUV2GRAY_420cv.COLOR_YUV2GRAY_I420= COLOR_YUV2GRAY_420cv.COLOR_YUV420sp2GRAY= COLOR_YUV2GRAY_420cv.COLOR_YUV420p2GRAY= COLOR_YUV2GRAY_420cv.COLOR_YUV2RGB_UYVY= 107cv.COLOR_YUV2BGR_UYVY= 108cv.COLOR_YUV2RGB_Y422= COLOR_YUV2RGB_UYVYcv.COLOR_YUV2BGR_Y422= COLOR_YUV2BGR_UYVYcv.COLOR_YUV2RGB_UYNV= COLOR_YUV2RGB_UYVYcv.COLOR_YUV2BGR_UYNV= COLOR_YUV2BGR_UYVYcv.COLOR_YUV2RGBA_UYVY= 111cv.COLOR_YUV2BGRA_UYVY= 112cv.COLOR_YUV2RGBA_Y422= COLOR_YUV2RGBA_UYVYcv.COLOR_YUV2BGRA_Y422= COLOR_YUV2BGRA_UYVYcv.COLOR_YUV2RGBA_UYNV= COLOR_YUV2RGBA_UYVYcv.COLOR_YUV2BGRA_UYNV= COLOR_YUV2BGRA_UYVYcv.COLOR_YUV2RGB_YUY2= 115cv.COLOR_YUV2BGR_YUY2= 116cv.COLOR_YUV2RGB_YVYU= 117cv.COLOR_YUV2BGR_YVYU= 118cv.COLOR_YUV2RGB_YUYV= COLOR_YUV2RGB_YUY2cv.COLOR_YUV2BGR_YUYV= COLOR_YUV2BGR_YUY2cv.COLOR_YUV2RGB_YUNV= COLOR_YUV2RGB_YUY2cv.COLOR_YUV2BGR_YUNV= COLOR_YUV2BGR_YUY2cv.COLOR_YUV2RGBA_YUY2= 119cv.COLOR_YUV2BGRA_YUY2= 120cv.COLOR_YUV2RGBA_YVYU= 121cv.COLOR_YUV2BGRA_YVYU= 122cv.COLOR_YUV2RGBA_YUYV= COLOR_YUV2RGBA_YUY2cv.COLOR_YUV2BGRA_YUYV= COLOR_YUV2BGRA_YUY2cv.COLOR_YUV2RGBA_YUNV= COLOR_YUV2RGBA_YUY2cv.COLOR_YUV2BGRA_YUNV= COLOR_YUV2BGRA_YUY2cv.COLOR_YUV2GRAY_UYVY= 123cv.COLOR_YUV2GRAY_YUY2= 124cv.COLOR_YUV2GRAY_Y422= COLOR_YUV2GRAY_UYVYcv.COLOR_YUV2GRAY_UYNV= COLOR_YUV2GRAY_UYVYcv.COLOR_YUV2GRAY_YVYU= COLOR_YUV2GRAY_YUY2cv.COLOR_YUV2GRAY_YUYV= COLOR_YUV2GRAY_YUY2cv.COLOR_YUV2GRAY_YUNV= COLOR_YUV2GRAY_YUY2cv.COLOR_RGBA2mRGBA= 125cv.COLOR_mRGBA2RGBA= 126cv.COLOR_RGB2YUV_I420= 127cv.COLOR_BGR2YUV_I420= 128cv.COLOR_RGB2YUV_IYUV= COLOR_RGB2YUV_I420cv.COLOR_BGR2YUV_IYUV= COLOR_BGR2YUV_I420cv.COLOR_RGBA2YUV_I420= 129cv.COLOR_BGRA2YUV_I420= 130cv.COLOR_RGBA2YUV_IYUV= COLOR_RGBA2YUV_I420cv.COLOR_BGRA2YUV_IYUV= COLOR_BGRA2YUV_I420cv.COLOR_RGB2YUV_YV12= 131cv.COLOR_BGR2YUV_YV12= 132cv.COLOR_RGBA2YUV_YV12= 133cv.COLOR_BGRA2YUV_YV12= 134cv.COLOR_BayerBG2BGR= 46cv.COLOR_BayerGB2BGR= 47cv.COLOR_BayerRG2BGR= 48cv.COLOR_BayerGR2BGR= 49cv.COLOR_BayerBG2RGB= COLOR_BayerRG2BGRcv.COLOR_BayerGB2RGB= COLOR_BayerGR2BGRcv.COLOR_BayerRG2RGB= COLOR_BayerBG2BGRcv.COLOR_BayerGR2RGB= COLOR_BayerGB2BGRcv.COLOR_BayerBG2GRAY= 86cv.COLOR_BayerGB2GRAY= 87cv.COLOR_BayerRG2GRAY= 88cv.COLOR_BayerGR2GRAY= 89cv.COLOR_BayerBG2BGR_VNG= 62cv.COLOR_BayerGB2BGR_VNG= 63cv.COLOR_BayerRG2BGR_VNG= 64cv.COLOR_BayerGR2BGR_VNG= 65cv.COLOR_BayerBG2RGB_VNG= COLOR_BayerRG2BGR_VNGcv.COLOR_BayerGB2RGB_VNG= COLOR_BayerGR2BGR_VNGcv.COLOR_BayerRG2RGB_VNG= COLOR_BayerBG2BGR_VNGcv.COLOR_BayerGR2RGB_VNG= COLOR_BayerGB2BGR_VNGcv.COLOR_BayerBG2BGR_EA= 135cv.COLOR_BayerGB2BGR_EA= 136cv.COLOR_BayerRG2BGR_EA= 137cv.COLOR_BayerGR2BGR_EA= 138cv.COLOR_BayerBG2RGB_EA= COLOR_BayerRG2BGR_EAcv.COLOR_BayerGB2RGB_EA= COLOR_BayerGR2BGR_EAcv.COLOR_BayerRG2RGB_EA= COLOR_BayerBG2BGR_EAcv.COLOR_BayerGR2RGB_EA= COLOR_BayerGB2BGR_EAcv.COLOR_BayerBG2BGRA= 139cv.COLOR_BayerGB2BGRA= 140cv.COLOR_BayerRG2BGRA= 141cv.COLOR_BayerGR2BGRA= 142cv.COLOR_BayerBG2RGBA= COLOR_BayerRG2BGRAcv.COLOR_BayerGB2RGBA= COLOR_BayerGR2BGRAcv.COLOR_BayerRG2RGBA= COLOR_BayerBG2BGRAcv.COLOR_BayerGR2RGBA= COLOR_BayerGB2BGRAcv.COLOR_COLORCVT_MAX= 143