Wie nehmen screenshots schnell in Java?
Ich bin die Implementierung einer einfachen eye-tracker, die erfordert schnelle screenshoting, was auf dem Bildschirm passiert gleichzeitig mit der Aufnahme das video von webcam.
Die Sache ist, dass die Art und Weise, es zu tun mit Roboter, die hier erwähnt werden: https://stackoverflow.com/questions/2475303/java-library-for-capturing-active-window-screenshot
ist extrem langsam.
Durch die Art und Weise, das abrufen von video von einer webcam funktioniert viel schneller und gibt den byte-array, die sehr schnell verarbeitet werden.
Weiß jemand eine schnellere Lösung? C++ - Bibliotheken, die verknüpft werden können, um Java, dies zu tun kann helfen, wie gut.
Danke!
UPDATE:
Beschlossen, zu wechseln, OpenCV, sucht nun den Weg zu machen, screenshot mit ihm 🙂
- Die Antworten auf die verwiesen wird, Frage sind zwei völlig verschiedene Arten der Nutzung von Robot. Was hast du Profil?
- Fügte hinzu, es zu dem post weiter unten
- Check out nircmd.Es hat eine eingebaute Funktion, um dies zu tun
nircmd.exe cmdwait 0 savescreenshot "f:\temp\shot.png"
.Setzen Sie dieses Programm in Ihr Projekt und führen Sie es mit Laufzeit()
Du musst angemeldet sein, um einen Kommentar abzugeben.
u sollten auf jeden Fall geben einen Schuss auf OpenCV
Hier ist eine Windows-spezifische version mit JNA, die ich benutze in einem meiner Projekte.
Habe ich festgestellt, dass es eine Größenordnung schneller als
Robot
auch mit der systemeigenen Aufruf-overhead.Robot
version in diesem FallDen
robot.createScreenCapture(captureSize);
Anruf dauert etwa 20ms für mich.createScreenCapture
zeigt, dass ein RobotPeer wird gebeten, bei der byte-array, das dann eingewickelt in eine entsprechende BufferedImage. Es beinhaltet auch sync und restoreLocalAcceleration Anrufe. Allerdings RobotPeer ist nicht in der Lage, direkt verwendet werden.Möglicherweise können Sie Gebrauch machen von JMF.. die Kasse Screen Grabber code @ Oracle-Website. Ich denke, es wird helfen, Ihr problem zu lösen.
Erfassen Vollbild.
Erfassen partial-Bildschirm.
Referenz : link