gpt4 book ai didi

c++ - 寻找最佳颜色匹配 - 如果没有可用的颜色阴影则拒绝

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:13:29 25 4
gpt4 key购买 nike

有没有一种方法可以将由十六进制代码给出的颜色识别为某种颜色的阴影?
我想我找到了一种方法,但不确定有多准确 - 但我如何判断我找到的颜色匹配是否不够好

我需要能够识别特定颜色的颜色匹配 - 一组固定的颜色(红色、黄色、橙色、蓝色、绿色、棕色、紫色、灰色、黑色、白色)。

目前我正在做一个基于距离的配色:

从上面的固定颜色列表中给定一个颜色c(我使用十六进制颜色设置它希望在该颜色范围的中间,我不太确定如何获得 -现在我正在使用一种看起来“不错”的颜色),以及一个可用颜色列表 list,我尝试从列表中找到颜色最接近的索引。

int matchColor(QColor c, QList<QColor> list)
{
int bestIndex = 0;
int distance;
int bestMatch = 0;
int sz = list.size() - 1;

for (int i = 0; i <= sz; ++i)
{
int Rdiff = 255 - qAbs(c.red() - list.at(i).red());
int Gdiff = 255 - qAbs(c.green() - list.at(i).green());
int Bdiff = 255 - qAbs(c.blue() - list.at(i).blue());
distance = Rdiff + Gdiff + Bdiff;

if (distance > bestMatch)
{
bestMatch = distance;
bestIndex = i;
}
}

// if(bestMatch < 600 ? or something ?) return -1;

return bestIndex;
}

问题是,因为这个匹配应该被严格执行(对于某些标准),我必须返回特定颜色的阴影 c 并且如果可以的话失败 't.
我不能 100% 确定颜色匹配是否良好 - 虽然看起来还不错。

但除了找到最佳颜色匹配之外——距离的合理值是多少,我应该拒绝匹配? (期望 distance 介于 0 和 765 之间,其中 765 是完美匹配)。
我可以检查某些范围吗?

每种颜色的范围是否不同?

注意 - 我发现了一些类似的问题,其中一些提到了我无法理解的更复杂的算法 - 但我没有看到任何可以告诉我如何拒绝匹配的东西......如果有更好的解决方案,我将不胜感激。

最佳答案

基本上不可能告诉您您的用例可以接受哪些公差,但我强烈建议在尝试匹配颜色之前先转换为 HSV。 H 分量很关键,公差应该不超过 20 或 30 度。 S 和 V 远没有那么重要;您可以忽略它们,或者只过滤掉色调完全消失的极端情况。

此处描述了转换:Algorithm to convert RGB to HSV and HSV to RGB in range 0-255 for both

关于c++ - 寻找最佳颜色匹配 - 如果没有可用的颜色阴影则拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38599792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com