根据RGB检测颜色

时间:2015-11-26 10:22:07

标签: colors computer-vision rgb tracking.js

我想检测网络摄像头中的红色和绿色物体。我正在使用这个Trackingjs库。我认为对于库,它将跟踪对象的红色,绿色和蓝色值,并根据代码中的内置颜色库检测颜色。

它们的内置颜色定义如下:

  tracking.ColorTracker.registerColor('purple', function(r, g, b) {
    var dx = r - 120;
    var dy = g - 60;
    var dz = b - 210;
    if ((b - g) >= 100 && (r - g) >= 60) {
      return true;
    }
    return dx * dx + dy * dy + dz * dz < 3500;
  });

在上面的示例中,blue - green >= 100red -green >= 60的对象将为purple

有人可以向我解释一下这是如何运作的。 如果我想检测红色/红色和绿色/绿色,我应该如何处理相同的功能。

2 个答案:

答案 0 :(得分:1)

如果你看一下RGB(120,60,210)的颜色就是紫色:

enter image description here

现在,dx测量传入的颜色距离紫色的红色成分的距离,dy测量传入的颜色距离紫色的绿色成分的距离{ {1}}测量传入的颜色与蓝色分量的距离。

最后的返回值,使用3-D Pythagorus计算,在三维彩色立方体中传入的颜色与紫色的距离的平方,在一个角落是黑色,白色斜对面和R,角落处的G和B.因此,它有效地定义了紫色周围的“球体”颜色。

如果你想检测偏红色调,你需要像

这样的东西
dz

只是说你希望红色比绿色更红,红色比蓝色更多。

如果你想检测绿色调,你需要像

这样的东西
if ((r-g)>50 && (r-b)>50) { return true;}

只是说你希望绿色比红色更绿,绿色比蓝色更多。

答案 1 :(得分:0)

RGB Colour Parser. 这就是你所需要的。当然也可以用于颜色验证。

来自描述:

一个接受字符串并尝试从中找出有效颜色的 JavaScript 类。一些接受的输入例如:

rgb(0, 23, 255)
#336699
ffee66
fb0
red
darkblue
cadet blue

演示:Demo