当生成图形并显示不同的数据集时,通常将这些集合区分颜色是个好主意。例如一条线为红色,下一条线为绿色,以此类推。但问题在于,当数据集的数量未知时,需要随机生成这些颜色,并且通常它们非常接近(例如,绿色和浅绿色)。
有什么想法可以解决这个问题并且如何生成明显不同的颜色呢?
如果您发现更容易的话,可以只讨论问题和解决方案,也可以提供使用 C#和基于RGB的颜色的示例。
当生成图形并显示不同的数据集时,通常将这些集合区分颜色是个好主意。例如一条线为红色,下一条线为绿色,以此类推。但问题在于,当数据集的数量未知时,需要随机生成这些颜色,并且通常它们非常接近(例如,绿色和浅绿色)。
有什么想法可以解决这个问题并且如何生成明显不同的颜色呢?
如果您发现更容易的话,可以只讨论问题和解决方案,也可以提供使用 C#和基于RGB的颜色的示例。
获取第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 255 值集合,并将其与最后一个 3 值集合进行比较,确保它们与旧值相差至少 X,然后再使用它们。
旧值:190、120、100
新值:180、200、30
如果 X = 20,则会重新生成新的集合。