有沒有一種方法可以將由其十六進制代碼給出的顏色標識爲某種顏色的陰影?
我想我找到了一種方法,不知道如何準確的 - 但我怎麼能告訴我們,如果色彩搭配,我發現是不夠好?找到最好的顏色匹配 - 如果沒有可用的顏色陰影,則拒絕
我需要能夠識別特定的顏色配色 - 一組固定的(紅,黃,橙,藍,綠,棕色,紫色,灰色,黑色,白色)。
目前我根據距離進行顏色搭配:
給定一個顏色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
和失敗,如果我不能。
我不是100%肯定的顏色匹配是好的 - 雖然它似乎相當好。
但除了找到最佳的色彩搭配等 - 什麼是距離的合理值,這是我應該拒絕比賽? (期望0到765之間的distance
,765完美匹配)。
我可以檢查某些範圍嗎?
對於每種顏色,範圍會不同?
注 - 我發現了一些類似的問題,有一些更復雜的算法,我不明白的引用 - 但我看到了什麼,能告訴我如何拒絕比賽......我希望如果任何一個更好的解決方案。
是,該範圍將是對於每種顏色不同的,除非首先轉換爲一個感知上均勻的顏色空間,例如[CIE實驗室(https://en.wikipedia.org/wiki/Lab_color_space) 。 –