Pythonでスクリーンキャプチャプログラムを作成しています。私の現在の問題は、PIL.ImageGrab.grab()が2秒後と同じ出力を返すことです。たとえば、私ははっきりしていないと思いますが、次のプログラムでは、PIL.ImageGrabの間に画面を移動していても、ほとんどすべての画像が同じで、同じImage.tostring()値を持っています。グラブループが実行されていました。
>>> from PIL.ImageGrab import grab
>>> l = []
>>> import time
>>> for a in l:
l.append(grab())
time.sleep(0.01)
>>> for a in range(0, 30):
l.append(grab())
time.sleep(0.01)
>>> b = []
>>> for a in l:
b.append(a.tostring())
>>> len(b)
30
>>> del l
>>> last = []
>>> a = 0
>>> a = -1
>>> last = ""
>>> same = -1
>>> for pic in b:
if b == last:
same = same + 1
last = b
>>> same
28
>>>
すべての画像は同じですが、30分の1が異なるため、これは問題です。それは絶対に恐ろしい品質のビデオになります。PIL.ImageGrab.grab()に代わるより良い品質の代替品があるかどうか教えてください。画面全体をキャプチャする必要があります。ありがとう!
編集:
これまでのところ、最良の代替手段はpywin32を使用することのようです。今は使っていますが、とても遅いです。今のところこのプロジェクトは個人的なものなので、互換性についてはあまり気にしません。プログラムのフレームレートを計算するたびに、pywin32は非常に遅く、ネガティブになります。より速い代替案があるかどうか教えてください。ありがとう!