我有一些本地化的问题:
我有一个Swing应用程序,我可以在其中添加两个点。应用程序的作用是每隔100ms它保存由屏幕上的两个点(矩形)确定的选定区域,并将其与之前的版本进行比较,以查看该区域是否有任何变化。
所以这个操作每隔100ms执行一次:
这一点是,如果所选区域发生变化,我需要完成一项操作。在90%的时间内,所选区域不变。
有没有一种更有效的方法在java / swing中添加某种监听器来检查指定区域的变化?我试图搜索类似的东西,但搜索词对于这类问题来说太笼统了。 (或者我只是愚蠢。)
那里有数以百万计的罐子,我希望可能有类似的东西适合我的需要。
答案 0 :(得分:1)
如图所示here,createScreenCapture()
可以捕获由两点定义的直立矩形中的BufferedImage
像素。您可以使用getRGB()
遍历像素以实现任何所需的启发式算法。您选择的detect a scene change方法取决于目标。作为一个简单的具体示例,您可以使用getHSBColor()
来查找亮度变化。更多示例可以在ImageJ
中找到。
答案 1 :(得分:1)
如果通过“更改”表示“屏幕显示的重大变化”,那么我认为这种方法是最好的方法。任何其他“屏幕更改监听器”可能都必须实现相同的功能。
PS:也许你可以通过仅测试一些像素来提高效率,例如:随机挑选10个像素中的1个,只进行比较。