adeelz92
adeelz92

Reputation: 489

What is the range of pixel values in HSV , YCrCb, and LAB color spaces for each channel in opencv python

What is the range of values in HSV, YCrCb and LAB color spaces in opencv python. For example in RGB, R -> 0-255, G -> 0-255 and B -> 0-255. What is the valid range for the mentioned color spaces.

Thanks

Upvotes: 4

Views: 5673

Answers (1)

alkasm
alkasm

Reputation: 23002

The OpenCV documentation covers this completely. Just to recap for your specific questions though, for an 8-bit image, converting from a BGR image with the following conversion codes will give you the following maximum values for each channel:

  • COLOR_BGR2HSV --> [180, 255, 255]
  • COLOR_BGR2Lab --> [255, 255 255]
  • COLOR_BGR2YCrCb --> [255, 255 255]

There's an additional option for the various color transformations that do not get mapped to the full 255 values, generally by appending _FULL to the conversion code, so that they use the full range.

For e.g., HLS and HSV colorspaces normally give the H (hue) channel values in [0, 360) to map 360 degrees of color on a color wheel. However, you cannot fit those values in a uint8 type, so instead OpenCV divides this value by 2 with COLOR_BGR2HSV or COLOR_BGR2HLS so that it fits, but this means you can only specify 180 separate hues in a uint8 image. But you could fit 255 distinct values, so instead, there exists the options COLOR_BGR2HSV_FULL and COLOR_BGR2HLS_FULL (and the inverses) to specify to use the full 255 range for the hue channel; so that 0 maps to 0, 255 maps to 360 degrees, and linearly spaced in between.

All of the available color codes can be seen under the ColorConversionCodes in the docs.

Upvotes: 9

Related Questions