gpt4 book ai didi

python - 修正 cv2.inRange() 函数的色彩空间

转载 作者:行者123 更新时间:2023-12-05 09:31:12 27 4
gpt4 key购买 nike

关于以下 cv2.inRange(...) 调用:

mask = cv2.inRange(quantized_img, color, color)

'quantized_img' 和 'color' 参数必须严格采用 HSV 格式,还是可以使用 RGB 图像和 RGB“颜色”? RGB 似乎对我有用,但我能找到的所有示例都是基于 HSV 的。所以我很关心正确的用法。谢谢!

最佳答案

一般来说,使用您喜欢的任何颜色空间。 RGB/BGR 很好,HSV 很好,完全组成的东西(使用 cv.transform)也很好。

inRange 跨越一个“立方体”。

想一想。想象一个带有 R、G、B 轴或 H、S、V 轴的 3D 图。在 RGB 空间中,立方体的面与这些 RGB 轴对齐。在 HSV 空间中,立方体的面与那些轴对齐。

现在,跨越 RGB 空间的立方体在转换到 HSV 空间时,与 HSV 空间中的轴对齐。事实上,它甚至不再是立方体,而可能是某种圆环体或圆锥体的一部分或其他东西。反过来也是一样。

如果您感兴趣的值区域,无论您选择什么空间,都是平坦甚至棒状(而不是大部分球形云),您必须跨越的立方体可能与您感兴趣的值区域对齐得非常糟糕,并且必须包含许多您感兴趣的值。

因此您进入另一个颜色空间,您感兴趣的值与该空间中的轴稍微对齐。那么由 inRange 跨越的立方体更符合您的目的。

想象一下 RGB 空间中的一根“棍子”从黑角到白角。它表示没有饱和度的“颜色”(因为颜色位于立方体的其他六个角)。尝试在该区域上跨越一个立方体。不太合身。

然而,在 HSV 空间中,这是微不足道的。通常它被可视化为一个圆柱体/倒锥体,虽然......在中心跨越一个薄圆柱体:任何色调(角度),任何值(高度),具有非常低的饱和度(靠近中心轴)。如果您将 HSV 视为一个立方体,您将跨越一堵薄墙。这一切都非常合适。

RGB cube HSV cone

关于python - 修正 cv2.inRange() 函数的色彩空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69004124/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com