java - 比较 RGB 值
问题描述
我正在用java设计一个程序来比较图片中的像素和它们的RGB值。例如,我有一列像素,我想为每个像素分配一个值,其中它根据比例对每个像素进行排名。
示例比例:
深绿色=500 > 浅绿色=400 > 黄色=300 > 浅红色=200 > 深红色=100
当像素是浅绿色和深绿色之间的颜色时,我希望能够获得/打印这些值以及介于两者之间的所有内容,例如获得 430 之类的东西。我努力寻找一种可以让我比较这些颜色的方法。
解决方案
在我制作的几个程序中,我需要类似的东西。然而,我的解决方案是分别比较两个像素的 RG 和 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));
}
推荐阅读
- excel - 我想将多列拆分为固定行。在 EXCEL 中使用电源查询或任何其他方法
- c# - 将实际 RGB 值与字典中的 RGB 值进行比较
- ios - 带有 UINavigationController 的容器视图?
- android - 在给定距离的情况下获取位置周围的地方
- javascript - Ag-Grid React headerComponentFramework 移动设备上的小点击目标?
- html - 难以通过具体化改变文本框的焦点
- c# - 在我的 c# 应用程序中,报表查看器打印后的日期如 2019/01/25,如 1/25/2018
- ios - 在 Google Cloud Platform 中启用 Places API for iOS
- maven - 名称字段如何/为什么覆盖 groupid
- java - H2数据库存储机制