-1

我有一个项目,它捕获一个区域并在 HSB 中找到它的主色,我使用这篇文章来找到主色。

在我的代码中,我在项目启动时获得了主色,并且每一秒我都会拍摄该区域的照片并将其与第一种颜色与此代码进行比较:

private bool IsColorChanged(Structures.HSB hsb)
    {
        //hsb is the newest dominant color of that area
        //m_refcolor is the main color of that area which I got at startup
        Structures.HSB localhsb;
            localhsb.Hue = Math.Abs(hsb.Hue - m_refcolor.Hue);
            localhsb.Saturation = Math.Abs(hsb.Saturation - m_refcolor.Saturation);
            localhsb.Brightness = Math.Abs(hsb.Brightness - m_refcolor.Brightness);
            if ((localhsb.Hue >= m_hsbtr.Htreshold) || (localhsb.Saturation >= m_hsbtr.Streshold) || (localhsb.Brightness >= m_hsbtr.Btreshold))
                return true;
        return false;
    }

如果颜色更改为 anycolor,我会向用户触发一个事件。

我的最终目标是找出颜色是否更改为特定颜色?但我不知道该怎么办。我的意思是我不知道如何与 HSB 进行比较,我使用的代码仅在我想知道颜色是否变为任何颜色时才有效。

我使用了 c#,但我对其他语言没有问题。任何帮助都是极好的。

4

1 回答 1

0

使用ColorMine项目解决了我的问题,无需更多编码。

该项目使用 Delta-E 来比较颜色并支持许多颜色空间。

于 2017-01-23T13:39:14.323 回答