寻找最近的RGB颜色

use*_*241 5 c++ rgb colors

有人告诉我使用距离公式来找出颜色是否匹配另一个我所拥有的,

struct RGB_SPACE
{
    float R, G, B;
};

RGB_SPACE p = (255, 164, 32);  //pre-defined
RGB_SPACE u = (192, 35, 111);  //user defined

long distance = static_cast<long>(pow(u.R - p.R, 2) + pow(u.G - p.G, 2) + pow(u.B - p.B, 2));
Run Code Online (Sandbox Code Playgroud)

这给出了一个距离,但我怎么知道颜色是否与用户定义相匹配至少25%?

我不确定,但我有一个想法,检查每个颜色值,看看差异是否为25%.例如.

float R = u.R/p.R * 100;
float G = u.G/p.G * 100;
float B = u.B/p.B * 100;

if (R <= 25 && G <= 25 && B <= 25)
{
   //color matches with pre-defined color.
}
Run Code Online (Sandbox Code Playgroud)

Phi*_*ipp 7

我建议不要检查RGB空间.如果你有(0,0,0)和(100,0,0)它们是相似的cababungas公式(以及根据卡萨布兰卡考虑太多颜色相似).然而,他们看起来很不一样.

HSL和HSV颜色模型是基于人的色彩演绎,然后你可以很容易地指定色调,饱和度和亮度相互独立的距离(根据什么"类似"你的情况表示).