我有一个输入图像,我从中提取了机器人项目的圆圈,然后获得了这些圆圈内的平均颜色。这些圆圈可以是红色或黄色,因为这就是我在木头上画它们的方式。我从这些圆圈中提取了平均颜色并将其显示在此处以进行调试。这不是输入图像,只是我想要区分为红色或黄色或两者都不是的颜色列表。
我尝试使用 cv2.inrange 将单一颜色值转换为 HSV,看看它是红色还是黄色,但调整起来非常麻烦,我最终决定采用另一种选择。我还尝试将 RGB 值转换为 LAB 颜色,并获取该值与红色和黄色的实验室值之间的欧几里得距离,以查看哪一个较小。这也没有达到预期效果。我还尝试了各种较小的想法,但它们都存在这样或那样的缺点。以下是我试图将其识别为红色或黄色的颜色,暗淡的颜色不应归类为红色或黄色:
关于如何区分这些色调为红色或黄色(或者如果没有则忽略它们)有什么想法吗?
最佳答案
如果我将您的图像复制到顶行,并将分离的 HSV channel 放置在下方,H
位于左侧,S
位于中间,V
> 右边:
希望您可以看到,中央 S
channel 可以很好地区分暗淡/淡紫色的紫色圆盘,这些圆盘显示为黑色,而其他圆盘都显示得更亮。这意味着 S
channel 上的简单阈值将找到所有颜色鲜艳的光盘。
提取出颜色鲜艳的圆盘后,如果我们想要区分黄色和紫色,我们可以查看上图中最左边的 H
channel 。
因此,具体来说,我会考虑使用 S
channel 制作明亮颜色圆盘的 mask ,然后使用 H
channel 来分离紫色从黄色开始。
关于python - 如何在 OpenCV 中可靠地将颜色分类为红色、黄色或 "other"颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75759216/