【问题标题】:Java fastest way to determine most occuring color by scaling an image?Java通过缩放图像来确定最常出现的颜色的最快方法?
【发布时间】:2016-12-15 22:48:56
【问题描述】:

解决方案应该很简单,但是由于我在该领域没有经验,因此找不到明确的解决方案。

对于一个简单的项目,我需要确定屏幕所有 4 个角中出现次数最多的颜色。 我现在有一个包含所有 4 个角的 BufferedImage,但找不到快速有效的算法来确定最常出现的颜色(不是平均值!)。

【问题讨论】:

  • 范围很广。你的意思是你想要图像的四个象限中最常见的颜色吗?您是否希望以某种方式量化这些颜色,以便将相似的颜色视为相同?例如,颜色 (255,0,0) 和 (255,1,1) 都是“红色”,将被视为相同颜色。

标签: java image algorithm colors


【解决方案1】:

我想说你最好的选择是将你找到的所有颜色加载到 HashMap<Color, Integer> 中,每次你找到 Color 的实例时,你要么将它添加到地图中,要么增加该颜色的计数器.完成后取所有整数的最大值。

关于 HashMap 的更多信息: https://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html

【讨论】:

  • 你的回答是对的。但是,不要回答并说这是问题的错误位置。如果问题太宽泛,请将其标记为此类。如果您想回答它,请这样做。不要两者都做。
  • 有道理,感谢您告诉我。我应该从我的答案中删除“广泛性”声明还是继续标记它?
  • OP 需要确定“最常出现的颜色”是什么意思。例如,如果有很多红色像素 (255,0,0),颜色为 (255,0,1) 的像素 - 我严重怀疑任何人都可以从视觉上区分红色 - 是否应该被视为同一事物?这可能取决于他将如何处理结果。此外,可能只有很少的像素具有相同的值,具体取决于颜色图深度。
  • 这很公平,但我觉得这更像是一个算法问题,而不是分离颜色背后的细节。无论他们是否使用 java.awt.Color 或他们决定的颜色的其他定义(可能 (255,0,1) 仍然是红色),这仍应计算每个颜色的出现次数。
  • @LordFarquaad 我会从你的答案中删除广泛性。特别是因为您设法用如此简短的答案很好地回答了这个问题,所以它可能并不太宽泛。但总的来说,应该是其中之一。如果它不属于 SO,请标记它并且不要回答。
猜你喜欢
  • 2018-03-21
  • 1970-01-01
  • 2012-05-17
  • 2016-04-02
  • 2020-04-27
  • 1970-01-01
  • 1970-01-01
  • 2010-10-23
  • 2019-09-20
相关资源
最近更新 更多