OpenCV 中如何在 RGB 和 HLS 之间转换?

推荐答案

在 OpenCV 中,可以使用 cv::cvtColor 函数在 RGB 和 HLS 颜色空间之间进行转换。以下是一个示例代码:

-- -------------------- ---- -------
-------- --------------------

--- ------ -
    -- ----
    ------- ----- - ------------------------

    -- ---- --- --- ---
    ------- ---------
    ------------------- --------- -------------------

    -- ---- --- --- ---
    ------- ---------
    ---------------------- --------- -------------------

    -- ----
    -------------------- ------- -------
    --------------- ------- ----------
    --------------- ------- ----------
    ---------------

    ------ --
-

本题详细解读

1. cv::cvtColor 函数

cv::cvtColor 是 OpenCV 中用于颜色空间转换的函数。它的原型如下:

  • src: 输入图像。
  • dst: 输出图像。
  • code: 颜色空间转换代码,例如 cv::COLOR_BGR2HLScv::COLOR_HLS2BGR
  • dstCn: 输出图像的通道数,如果为 0,则自动根据 code 确定。

2. RGB 和 HLS 颜色空间

  • RGB: 红绿蓝颜色空间,是最常见的颜色表示方式。每个像素由三个通道组成,分别表示红色、绿色和蓝色的强度。

  • HLS: 色调(Hue)、亮度(Lightness)、饱和度(Saturation)颜色空间。HLS 颜色空间更接近人类对颜色的感知,适合用于图像处理中的颜色分割和识别。

3. 转换代码

  • RGB 转 HLS: 使用 cv::COLOR_BGR2HLS 代码。
  • HLS 转 RGB: 使用 cv::COLOR_HLS2BGR 代码。

4. 注意事项

  • OpenCV 默认使用 BGR 顺序而不是 RGB,因此在转换时需要注意使用 cv::COLOR_BGR2HLS 而不是 cv::COLOR_RGB2HLS
  • 转换后的 HLS 图像仍然是 8 位图像,每个通道的值范围是 0 到 255。
纠错
反馈