Video-Capture-Daten vom Bildschirm in Python
Gibt es eine Möglichkeit mit Python (vielleicht mit OpenCV oder PIL) kontinuierlich Einzelbilder aller oder eines Teils der Bildschirm, der mindestens 15 fps oder mehr? Ich habe gesehen, wie er in anderen Sprachen durchgeführt, so in der Theorie sollte es möglich sein.
Brauche ich nicht zum speichern der Bilddaten in einer Datei. Ich wirklich nur wollen, um die Ausgabe ein array mit den raw RGB-Daten (wie in ein numpy-array oder so) da werde ich mir einfach nehmen Sie es und senden Sie es an eine große LED-Anzeige (wohl nach dem re-sizing).
InformationsquelleAutor Adam Haile | 2016-01-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es eine andere Lösung mit mss die viel bessere frame-rate. (Getestet auf einem Macbook Pro mit MacOS Sierra)
mit einem i7 2600k, erhalte ich nur 8 Bilder pro Sekunde bei der Aufnahme ein 1440p monitor.
InformationsquelleAutor Neabfi
Müssen Sie ImageGrab von Kissen (PIL) - Bibliothek und konvertieren die Aufnahme numpy-array. Wenn Sie das array, das Sie tun können, was Sie bitte mit Hilfe von opencv. Ich konvertierte Aufnahme graue Farbe und verwendet imshow() als eine demonstration.
Hier ist ein quick-code, um Ihnen den Einstieg:
können Sie schließen Sie ein array gibt es mit der Frequenz, die Sie bitte zu halten, erfassen von Bildern. Nach, dass Sie nur Dekodieren der frames. vergessen Sie nicht, fügen Sie vor der Schleife:
und innerhalb der Schleife die Sie hinzufügen können:
UPDATE
das Ergebnis am Ende Aussehen (Wenn Sie erreichen wollen, ein Strom von frames, dass ist. Das speichern als video, nur eine demonstration der Verwendung von opencv auf dem Bildschirm erfasst):
Hoffe, das hilft
Ich meinte zu sagen, fügen Sie eine Weile im Blick haben müssen, der Strom von screencaptures. Ich werde den code Bearbeiten nun. wie die für die Angabe bestimmte region verwenden bbox-parameter. Ein min mache ich das update
Ich machte weitere änderungen. Hoffe, das hilft
Dies ist im wesentlichen verwendet
ImageGrab.grab()
, die in meiner Erfahrung ist sehr sehr langsam (etwa 2 fps auf meinem Macbook Pro 2015). Diese Lösung nicht erfassen kann auf mehr als 15 Bildern pro Sekunde, wie der OP fragte. Ich habe auch versucht diemss
Bibliothek, die sehr viel schneller, aber ich schaffte es nicht garantieren eine stetige fps oder regelmäßigen Abständen zwischen den Bildern.InformationsquelleAutor ibininja
Ich habe versucht, alle der oben genannten, aber es hat mir nicht die Echtzeit-Bildschirm-update.
Sie können versuchen, diese. Dieser code ist getestet und erfolgreich gearbeitet hat und Ihnen auch eine gute fps-Ausgabe. Sie können auch beurteilen, dies von jedem loop-Zeit, die es benötigt.
InformationsquelleAutor Istiyak
Können Sie versuchen, diese=>
InformationsquelleAutor Sandzz
basierend auf diesen Beitrag und andere Beiträge, ich habe so etwas wie dieses .
Seine Einnahme einen screenshot und schreiben in eine video Datei ohne speichern der img.
InformationsquelleAutor szanyi krisztián
Ich habe versucht
ImageGrab
ausPIL
und es gab mir die 20fps, das ist ok, aber die Verwendung von win32-Bibliotheken gab mir +40fps, und das ist erstaunlich!Ich verwendet diese code by Frannecklp, aber es hat nicht funktioniert gut, so dass ich brauchte, um es zu ändern:
-Erstens
pip install pywin32
im Falle der Verwendung der Bibliotheken-importieren Sie die Bibliotheken, wie diese statt:
für geting ein einfaches Bild-Bildschirm tun:
und für immer frames:
InformationsquelleAutor Reza Hosseini
Alle der oben genannten Lösungen, die ich war nicht in der Lage zu bekommen eine nutzbare Bildrate, bis ich meine modifizierten code in der folgenden Weise:
Mit dieser Lösung komme ich leicht 20+ frames/Sekunde.
Referenz, überprüfen Sie diesen link: https://python-mss.readthedocs.io/examples.html
InformationsquelleAutor Markoe7