机器人检测所选区域的变化

时间:2013-07-24 11:28:33

标签: java swing

我有一些本地化的问题:

我有一个Swing应用程序,我可以在其中添加两个点。应用程序的作用是每隔100ms它保存由屏幕上的两个点(矩形)确定的选定区域,并将其与之前的版本进行比较,以查看该区域是否有任何变化。

所以这个操作每隔100ms执行一次:

  1. 获取区域
  2. 创建位图
  3. 与之前的版本(99%)比较
  4. 这一点是,如果所选区域发生变化,我需要完成一项操作。在90%的时间内,所选区域不变。

    有没有一种更有效的方法在java / swing中添加某种监听器来检查指定区域的变化?我试图搜索类似的东西,但搜索词对于这类问题来说太笼统了。 (或者我只是愚蠢。)

    那里有数以百万计的罐子,我希望可能有类似的东西适合我的需要。

2 个答案:

答案 0 :(得分:1)

如图所示herecreateScreenCapture()可以捕获由两点定义的直立矩形中的BufferedImage像素。您可以使用getRGB()遍历像素以实现任何所需的启发式算法。您选择的detect a scene change方法取决于目标。作为一个简单的具体示例,您可以使用getHSBColor()来查找亮度变化。更多示例可以在ImageJ中找到。

答案 1 :(得分:1)

如果通过“更改”表示“屏幕显示的重大变化”,那么我认为这种方法是最好的方法。任何其他“屏幕更改监听器”可能都必须实现相同的功能。

PS:也许你可以通过仅测试一些像素来提高效率,例如:随机挑选10个像素中的1个,只进行比较。