我正在尝试用java设计一个程序,周期性地(每100毫秒左右)截取我的显示器的屏幕截图,并计算整个屏幕的平均像素rgb值。我需要这个能够与视频游戏和iTunes/Quicktime视频工作。然而,我已经尝试过使用JNA和机器人来捕捉屏幕,只有当我不是在全屏捕捉视频游戏或iTunes视频时,它才有效。例如,我通过保存一个图像来测试我的代码,以检查和查看发生了什么。当我在玩电子游戏时,我只看到一个空白窗口的截图。我认为这是因为游戏使用directx或openGL,与硬件的通信方式与典型的应用程序不同。
如果我使用这种this方法来捕获屏幕截图,而不是机器人或JNA,这会解决我的问题吗?它看起来像是从openGL屏幕缓冲区复制数据。那么DirectX应用程序呢?
我基本上只是希望能够在任何时候都能在屏幕上获得感知到的像素数据。不管它是全屏DirectX还是OpenGL应用程序。提前感谢您的帮助。
发布于 2014-07-23 07:28:57
我猜这是一个自制版本的amBX照明系统。即使不是,下面的页面也可能对您有所帮助;它包含用于DIY环境照明设置的java代码和arduino代码,这需要完成相同的任务:
http://siliconrepublic.blogspot.com/2011/02/arduino-based-pc-ambient-lighting.html
要考虑的事项: 1.出于处理速度的原因,该代码样本故意忽略了屏幕上的一些像素2.根据您显示的内容(赛车游戏、第一人称射击游戏、自上而下查看策略或MOBA游戏、电影),您可能希望故意将显示内容分割为单独的扇区。例如,对于赛车游戏,您可能希望左侧和右侧都更独立,并且对快速变化非常敏感,而对于一般的电影观看,您可能希望获得更一般的输出,因为您需要处理更多不同的摄影机移动方式。
https://stackoverflow.com/questions/24899451
复制相似问题