python - 如何在 OpenCV 中可靠地将颜色分类为红色、黄色或 "other"颜色?

标签 python opencv colors robotics

我有一个输入图像,我从中提取了机器人项目的圆圈,然后获得了这些圆圈内的平均颜色。这些圆圈可以是红色或黄色,因为这就是我在木头上画它们的方式。我从这些圆圈中提取了平均颜色并将其显示在此处以进行调试。这不是输入图像,只是我想要区分为红色或黄色或两者都不是的颜色列表。

我尝试使用 cv2.inrange 将单一颜色值转换为 HSV,看看它是红色还是黄色,但调整起来非常麻烦,我最终决定采用另一种选择。我还尝试将 RGB 值转换为 LAB 颜色,并获取该值与红色和黄色的实验室值之间的欧几里得距离,以查看哪一个较小。这也没有达到预期效果。我还尝试了各种较小的想法,但它们都存在这样或那样的缺点。以下是我试图将其识别为红色或黄色的颜色,暗淡的颜色不应归类为红色或黄色: Colours List (ignore background)

关于如何区分这些色调为红色或黄色(或者如果没有则忽略它们)有什么想法吗?

最佳答案

如果我将您的图像复制到顶行,并将分离的 HSV channel 放置在下方,H 位于左侧,S 位于中间,V > 右边:

enter image description here

希望您可以看到,中央 S channel 可以很好地区分暗淡/淡紫色的紫色圆盘,这些圆盘显示为黑色,而其他圆盘都显示得更亮。这意味着 S channel 上的简单阈值将找到所有颜色鲜艳的光盘。


提取出颜色鲜艳的圆盘后,如果我们想要区分黄色和紫色,我们可以查看上图中最左边的 H channel 。


因此,具体来说,我会考虑使用 S channel 制作明亮颜色圆盘的 mask ,然后使用 H channel 来分离紫色从黄色开始。

关于python - 如何在 OpenCV 中可靠地将颜色分类为红色、黄色或 "other"颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75759216/

相关文章:

python - 多次调用 Python cgi fieldstorage

python - 您如何在本地针对 OpenID 进行开发

c++ - 在 opencv 中组合 Scharr 导数

python - 在 OpenCV + Python 中计算汽车

java - 如何使用 BufferedImage 和 YCbCr 色彩空间?

java - 如何获取 JPanel 中某个点的颜色?

Python Tkinter : Text widget unbind mouse wheel

python - 在 Python 中并行运行函数

c++ - memset 函数在我的 C++ 动态数组初始化中不起作用

html - CSS ARGB RGBA 十六进制格式