根据 RGB 检测颜色
Detect a colour based on its RGB
我想从网络摄像头检测红色和绿色物体。我正在使用这个 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 >= 100
和 red -green >= 60
的对象将是 purple
。
谁能给我解释一下这是怎么回事。
如果我想检测红色/偏红和green/greenish,我应该如何使用相同的功能。
如果你看颜色 RGB(120,60,210) 就是这个紫色:
现在,dx
测量传入的颜色与该紫色中的红色分量的距离,dy
测量传入的颜色与该紫色的绿色分量的距离dz
测量传入的颜色与蓝色分量的距离。
最后的return值,使用3-D毕达哥拉斯计算传入的颜色与一角为黑色的3-D颜色立方体中的紫色距离的平方,白色斜对面,R、G 和 B 在角落。因此,它有效地定义了紫色周围的 "sphere" 颜色。
如果你想检测偏红的色调,你需要像
这样的东西
if ((r-g)>50 && (r-b)>50) { return true;}
这只是说你希望红色比绿色多,红色比蓝色多。
如果你想检测偏绿的色调,你会想要像
这样的东西
if ((g-r)>50 && (g-b)>50) { return true;}
这只是说你希望绿色多于红色,绿色多于蓝色。
RGB Colour Parser.
这就是你需要的。当然也可以用来验证颜色。
来自描述:
A JavaScript class 接受字符串并尝试从中找出有效的颜色。一些可接受的输入例如:
rgb(0, 23, 255)
#336699
ffee66
fb0
red
darkblue
cadet blue
演示:Demo
我想从网络摄像头检测红色和绿色物体。我正在使用这个 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 >= 100
和 red -green >= 60
的对象将是 purple
。
谁能给我解释一下这是怎么回事。 如果我想检测红色/偏红和green/greenish,我应该如何使用相同的功能。
如果你看颜色 RGB(120,60,210) 就是这个紫色:
现在,dx
测量传入的颜色与该紫色中的红色分量的距离,dy
测量传入的颜色与该紫色的绿色分量的距离dz
测量传入的颜色与蓝色分量的距离。
最后的return值,使用3-D毕达哥拉斯计算传入的颜色与一角为黑色的3-D颜色立方体中的紫色距离的平方,白色斜对面,R、G 和 B 在角落。因此,它有效地定义了紫色周围的 "sphere" 颜色。
如果你想检测偏红的色调,你需要像
这样的东西if ((r-g)>50 && (r-b)>50) { return true;}
这只是说你希望红色比绿色多,红色比蓝色多。
如果你想检测偏绿的色调,你会想要像
这样的东西if ((g-r)>50 && (g-b)>50) { return true;}
这只是说你希望绿色多于红色,绿色多于蓝色。
RGB Colour Parser. 这就是你需要的。当然也可以用来验证颜色。
来自描述:
A JavaScript class 接受字符串并尝试从中找出有效的颜色。一些可接受的输入例如:
rgb(0, 23, 255)
#336699
ffee66
fb0
red
darkblue
cadet blue
演示:Demo