当前位置: 首页 > 知识库问答 >
问题:

比较红绿蓝值

南宫阳焱
2023-03-14

我正在用java设计一个程序,它比较图片中的像素及其RGB值。例如,我有一列像素,我想为每个像素指定一个值,其中每个像素根据一个比例进行排名。

示例比例:

深绿色=500

我希望能够获得/打印这些值以及介于两者之间的所有内容,例如当像素介于浅绿色和深绿色之间时,可以获得类似于430的东西。我努力寻找一种方法,使我能够比较这些颜色。

共有1个答案

詹甫
2023-03-14

在我制作的几个程序中,我需要类似的东西。然而,我的解决方案是单独比较两个像素的R G和B值,找到相对于每个像素的256个最大值的差异百分比,然后根据我需要对这些信息做什么来平均或添加所有三个像素的差异。

然而,我今天写的实现似乎有缺陷,出于某种原因,总是返回100%的相似性。我将分享代码行,因为你可以得到它应该做什么。

public static int compareRGB(int rgb1, int rgb2){

    int[] rgb1Colors = new int[3];
    int[] rgb2Colors = new int[3];

    rgb1Colors[0] = getRed(rgb1);
    rgb1Colors[1] = getGreen(rgb1);
    rgb1Colors[2] = getRed(rgb1);

    rgb2Colors[0] = getRed(rgb2);
    rgb2Colors[1] = getGreen(rgb2);
    rgb2Colors[2] = getBlue(rgb2);

    return (100-(((Math.abs(rgb1Colors[0]-rgb2Colors[0])+Math.abs(rgb1Colors[1]-rgb2Colors[1])+Math.abs(rgb1Colors[2]-rgb2Colors[2]))/768)*100));
}
 类似资料:
  • 问题内容: 该方法返回单个int。如何分别获得红色,绿色和蓝色作为0到255之间的值? 问题答案: Java的Color类可以进行转换:

  • 需配合冷光线驱动模块使用,提供红绿黄橙四种颜色的冷光线。 净重量:32.5g 体积:1000mm 参数 发光强度:100nits 外层材质:PVC 抗拉力:<1kg 使用寿命:≥5000小时 工作电压:DC 5V 抗跌落能力:1.5m 工作温度:-10℃~55℃ 工作湿度:<95% 注意事项 冷光线驱动在工作时会发出轻微噪音,属正常现象,不影响使用。

  • 有没有一种方法可以轻松地将给定的十六进制颜色代码分配给更一般的类别(红色、绿色、蓝色、黄色、橙色、粉色、黑色、白色、灰色...)? 比如- 编辑:甚至与adobe photoshop类似,找到最接近的网络安全颜色,这样可以将颜色数量减少到256种,这已经是一个很好的解决方案了!

  • 我有一个关于compareTo函数如何帮助比较器排序的问题,即o1。比较(o2)与o2。比较(o1) 如果两个字符串相等,则此方法返回0,否则返回正值或负值。如果第一个字符串在词典上大于第二个字符串,则结果为正,否则结果为负。 上面的陈述很简单,但是为什么o1.compare(o2)会给我一个升序,而o2.compare(o1)给了我一个降序? 如果我有整数值“5,10,3”,我得到3,5,10和

  • Snowpack Snowpack 也是一个与 Vite 十分类似的非构建式原生 ESM 开发服务器。除了不同的实现细节外,这两个项目在技术上比传统工具有很多共同优势。Vite 的依赖预绑定也受到了 Snowpack v1(现在是 esinstall)的启发。这两个项目之间的一些主要区别是: 生产构建 Snowpack 的默认构建输出是未打包的:它将每个文件转换为单独的构建模块,然后将这些模块提供

  • 比较两个输入的大小 用法 Your browser does not support the video tag. 案例:小台灯 功能:当随机数A>B时,灯亮;当随机数A<B时灯灭 工作原理 在配置面板中设置操作符(>,<,=),将两个数值连接到节点的输入端。如果满足比较条件,结果将输出YES。否则将输出NO。