在Android中将任何颜色代码转换为最接近的人类颜色

时间:2015-05-28 06:30:47

标签: java android colors camera rgb

我打算编写一个安卓应用程序,它将使用实时相机预览或使用相机拍摄的图像来检测任何纯色背景图像的颜色。

我可以将rgb / hex值颜色转换为我已在特定列表中定义的最接近的颜色名称。假设我在列表中定义了10种众所周知的颜色。一旦我确定了任何颜色的十六进制代码,我需要从列表中找到它最接近的颜色。

如何使用高效快速的算法完成此操作? android palette class中是否有任何API可以执行相同操作?

由于

1 个答案:

答案 0 :(得分:-1)

我建议只计算所有预定义颜色的距离,然后选择最接近的颜色。您可以尝试定义color1(r1,g1,b1)和color2(r2,g2,b2)之间的距离,如下所示:| color1 - color2 | = sqrt(sqr(r1-r2)+ sqr(g1-g2)+ sqr(b2-b1))。如果您有大约1000种预定义颜色,即使是线性搜索,这也会非常快。你也可以为这个问题谷歌更好的距离函数。