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

3

我想检测一张图片的每个像素是否在两种颜色之间。我使用 getImageData 获取像素颜色,但现在不知道如何判断它是否在范围内。 有什么想法吗? 谢谢


1
你对颜色在两种颜色之间的“范围内”的定义是什么? - Philipp
是的,但我不知道如何使用蓝色调做同样的事情,例如: 如果我输入: var cmin = {r:0, g:0, b:255}; var cmax = {r:0, g:0, b:50};它不起作用。 - PaRoJa
1个回答

6
在HSL颜色中,H代表色调(通常我们认为它是颜色)。如果您使用HSL颜色,您可以像Stano建议的那样,只需计算任何像素色调与您指定的色调之间的线性距离。
HueDesired – HuePixel

但是计算机图像通常使用RGB颜色模型进行定义。RGB使用混合颜色来制作所需的颜色。通过在彩色轮上计算两种颜色之间的欧几里德距离,您可以确定它们是否“接近”。

以下是一个用于计算指定颜色和像素颜色之间欧几里德距离的函数:

// 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种颜色进行比较,因此只需对您的2种颜色运行此函数。

您需要确定两种颜色和像素颜色之间的“可接受”距离,但是此函数将为您提供测量工具以便处理。


1
谢谢,您是老板!这正是我所需要的。 - PaRoJa
被低估的答案! - Leonardo Bezerra

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接