我正在寻找一种能够准确地将两种颜色之间的距离表示为数字或类似物的功能.
例如,我希望有一个HEX值或RGB数组的数组,我想在给定颜色的数组中找到最相似的颜色
例如.我传递一个RGB值的函数,并返回数组中"最接近"的颜色
我想用参数颜色调用一个方法.但是有很多颜色只有阴影才有区别.我怎样才能找到与我的颜色不同的颜色,例如AntiqueWhite和Bisque.这是调色板.
Bitmap LogoImg = new Bitmap("file1.jpeg");//the extension can be some other
System.Drawing.Color x = LogoImg.GetPixel(LogoImg.Width-1, LogoImg.Height-1);
LogoImg.MakeTransparent(x);
image1.Source = GetBitmapSource(LogoImg);
Run Code Online (Sandbox Code Playgroud) 我正在使用机器人截取屏幕截图,然后在这些屏幕截图中搜索较小的图像.由于伽马校正,这适用于Windows但不适用于OS X. 我能想出的最佳解决方案是简单地匹配相似的颜色而不是精确的颜色匹配.
我担心匹配相似的颜色将意味着超越getRGB因此会减慢我的程序(因为它采用多个屏幕截图并将它们与较小的图像进行比较以非常快速地搜索匹配).
我的问题是,假设我有BufferedImage截图和BufferedImage smallImage,我将如何判断Screenshot.getRGB(1,1)和smallImage.getRGB(1,1)是否是相似的颜色?
我试图制作一个随机的颜色生成器,但我不希望类似的颜色显示在arrayList中
public class RandomColorGen {
public static Color RandColor() {
Random rand = new Random();
float r = rand.nextFloat();
float g = rand.nextFloat();
float b = rand.nextFloat();
Color c = new Color(r, g, b, 1);
return c;
}
public static ArrayList<Color> ColorList(int numOfColors) {
ArrayList<Color> colorList = new ArrayList<Color>();
for (int i = 0; i < numOfColors; i++) {
Color c = RandColor();
if(similarcolors){
dont add
}
colorList.add(c);
}
return colorList;
}
}
Run Code Online (Sandbox Code Playgroud)
我很困惑请帮助:)