使用javascript检测颜色是否在两种颜色之间

时间:2013-05-28 11:03:54

标签: javascript html5-canvas getimagedata

我想检测图像的每个像素是否在两种颜色之间的范围内。我用 getImageData 获得像素颜色,但现在我不知道它是否在范围内。 任何的想法? 感谢

1 个答案:

答案 0 :(得分:2)

在HSL颜色中,H表示Hue(我们通常认为是颜色)。如果你使用HSL颜色,你可以像Stano建议的那样,只计算任何像素色调和你指定的色调之间的线性距离。

HueDesired – HuePixel

但计算机图像通常在RGB颜色模型中定义。 RGB使用混合颜色来制作您想要的颜色。使用RGB,您可以通过计算色轮上彼此的欧几里德距离来确定2种颜色是否“接近”。

这是计算指定颜色和像素颜色之间的欧几里德距离的函数:

// find Euclidian distance from the pixel color to the specified color 
//
function colorDistance(colorRed,colorGreen,colorBlue,pixelRed,pixelGreen,pixelBlue){

    var diffR,diffG,diffB;

    // distance to color
    diffR=( colorRed - pixelRed );
    diffG=( colorGreen - pixelGreen );
    diffB=( colorBlue - pixelBlue );
    return(Math.sqrt(diffR*diffR + diffG*diffG + diffB*diffB));

}

由于您要将像素与2种颜色进行比较,因此只需为两种颜色运行此功能。

由您决定两种颜色和像素颜色之间的“可接受”距离,但此功能将为您提供一种可供使用的测量工具。