在图表中生成明显不同的RGB颜色

96

当生成图形并显示不同的数据集时,通常将这些集合区分颜色是个好主意。例如一条线为红色,下一条线为绿色,以此类推。但问题在于,当数据集的数量未知时,需要随机生成这些颜色,并且通常它们非常接近(例如,绿色和浅绿色)。

有什么想法可以解决这个问题并且如何生成明显不同的颜色呢?

如果您发现更容易的话,可以只讨论问题和解决方案,也可以提供使用 C#和基于RGB的颜色的示例。


1
请点击此链接查看相关的编程内容:https://dev59.com/pHRB5IYBdhLWcg3w6bUD#4382138 - Ohad Schneider
12个回答

0

获取第n个颜色。只需要这种代码就足够了。我在我的OpenCV聚类问题中使用了这个。这将创建不同的颜色,因为col的变化。

for(int col=1;col<CLUSTER_COUNT+1;col++){
switch(col%6)
   {
   case 1:cout<<Scalar(0,0,(int)(255/(int)(col/6+1)))<<endl;break;
   case 2:cout<<Scalar(0,(int)(255/(int)(col/6+1)),0)<<endl;break;
    case 3:cout<<Scalar((int)(255/(int)(col/6+1)),0,0)<<endl;break;
    case 4:cout<<Scalar(0,(int)(255/(int)(col/6+1)),(int)(255/(int)(col/6+1)))<<endl;break;
    case 5:cout<<Scalar((int)(255/(int)(col/6+1)),0,(int)(255/(int)(col/6+1)))<<endl;break;
    case 0:cout<<Scalar((int)(255/(int)(col/6)),(int)(255/(int)(col/6)),0)<<endl;break;
   }
}

-3

你可以获取一个随机的 3 255 值集合,并将其与最后一个 3 值集合进行比较,确保它们与旧值相差至少 X,然后再使用它们。

旧值:190、120、100

新值:180、200、30

如果 X = 20,则会重新生成新的集合。


我几乎好奇到想算一下,当没有更多的解决方案时,这个算法进入无限循环的平均时间是多久。 - Tatarize
嗯,奇怪的是你的回答说,任何与另一个R值太接近的r值都会导致再生,最好不超过12。尽管它奇怪地认为红色和蓝色的颜色太接近,因为两者的绿色都为0,而这在20以内。我的意思是,你的例子字面上说:https://www.colorcodehex.com/be7864/ https://www.colorcodehex.com/b4c81e/太接近了,应该重新生成。 - Tatarize

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