【发布时间】:2015-01-27 02:56:25
【问题描述】:
我正在尝试在图像中查找图像。我这样做是为了桌面自动化。此刻,我试图快速,而不是精确。因此,我决定仅根据相同的平均颜色匹配相似的图像。
如果我在我的桌面上选择了几个图标,例如:
我会搜索最后一个(我还在想这个文件是什么):
您可以清楚地看到最有可能匹配的内容:
在不同的情况下,这可能不起作用。但是,当给定图像大小时,它应该非常可靠且速度极快。
我可以得到BufferedImage对象的截图:
MSWindow window = MSWindow.windowFromName("Firefox", false);
BufferedImage img = window.screenshot();
//Or, if I can estimate smaller region for searching:
BufferedImage img2 = window.screenshotCrop(20,20,50,50);
当然,搜索图像的图像将从保存在文件中的模板加载:
BufferedImage img = ImageIO.read(...whatever goes in there, I'm still confused...);
我解释了我所知道的,以便我们可以专注于唯一的问题:
- 问:如何获得缓冲图像的平均颜色?如何在该图像的子矩形上获得如此平均的颜色?
速度在这里获胜。在这种特殊情况下,我认为它比代码可读性更有价值。
【问题讨论】:
-
您可以考虑使用积分图:en.wikipedia.org/wiki/Summed_area_table
-
聪明人!每次我开始编程时,我迟早都必须承认数学是和蔼可亲的。
标签: java computer-vision bufferedimage