0

我有一点本地化的问题:

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

所以这个操作每 100 毫秒执行一次:

  1. 获取区域
  2. 创建位图
  3. 与以前的版本比较 (99%)

这样做的重点是,如果所选区域发生变化,我需要进行操作。在 90% 的时间内,所选区域保持不变。

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

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

4

2 回答 2

1

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

PS:也许你可以通过只测试一些像素的变化来提高效率,例如随机选择10个像素中的1个,然后只比较它们。

于 2013-07-24T16:48:15.497 回答
1

如此处所示,createScreenCapture()可以捕获BufferedImage由您的两个点定义的直立矩形中的一个像素。您可以循环使用像素getRGB() 来实现任何所需的启发式方法。您选择的检测场景变化的方法取决于目标。作为一个简单的具体示例,您可以使用getHSBColor()来查找亮度的变化。更多示例可以在 中找到ImageJ

于 2013-07-24T16:41:33.740 回答