java 通过点击获取颜色 java找色函数

发布时间:2023-05-17 11:32:15

我用java找到图像中对象的颜色。

我已经从imgae得到了一个像素,然后就可以得到这个像素的r,g,b值。

现在,我想知道这个像素属于哪种颜色。因此,我创建了一个映射,将16进制代码映射到color_names。现在,我遍历地图,找出地图中所有项目的最短距离,并将最小距离映射到将颜色分配给像素的像素中。

这是我的一些代码: -

private static String getColorName(int[] rgb) {Map data = new HashMap();data.put(00ff00”, "GREEN");data.put(ff0000”, "RED");data.put(00000ff, "BLUE");data.put(00fff”, "CYAN");data.put(ffff00”, "YELLOW");data.put(ff00ff, "PINK");data.put(c8c8c8”, "LIGHT GREY");//data.put("808080", "GREY");data.put(ffc800”, "ORANGE");data.put(4F3E86) "PURPLE");data.put("000000", "BLACK");data.put("ffffff", "WHITE");String hex = “0123456789abcdef”;int minD = 256*256*256;String res = "";for (String key : data.keySet()) {int r = hex.indexOf(key.charAt(0))*16 + hex.indexOf(key.charAt(1));int g = hex.indexOf(key.charAt(2))*16 + hex.indexOf(key.charAt(3));int b = hex.indexOf(key.charAt(4))*16 + hex.indexOf(key.charAt(5));int distance = (Math.abs(rgb[0] - r)) +(Math.abs(rgb[1] - g)) +(Math.abs(rgb[2] - b));if (distance < minD) {res = data.get(key);minD = distance;}}return res;}

现在的问题是,

正如你所看到的距离功能是: -

D = | r1-r2 | + | g1-g2 | + | b1-b2 |其中| x 表示abs(x)功能

我的黄色被映射成灰色。经过一些调试,我发现了这一点。

我应该选择什么距离函数,或者如何改进我的映射?

java中是否有内置的东西?

谢谢

上一篇 AIDL
下一篇 java 替换文件某一行 java 替换换行符

文章素材均来源于网络,如有侵权,请联系管理员删除。

标签: Java教程Java基础Java编程技巧面试题Java面试题