XWindowSystem_Screenshoter
A simple use and little size python library to get screenshot of a single window on linux!
How use
There are two ways to use it, in synchronous and asynchronous mode (in reference to the screenshot) But the statement is very similar.
Declaration
sync
window_sync = WindowCaptureSync("firefox")
async
window_async = WindowCaptureAsync("firefox")
The biggest difference is that in synchronous mode you must call a function to take the screenshot, whereas in asynchronous mode, a capture function is run in a loop and you will only need to call a property that will contain the most recently captured screenshot
To get Screenshot
sync
window_sync = WindowCaptureSync("firefox")
screenshot = window_sync.get_screenshot()
async
window_async = WindowCaptureAsync("firefox")
window_async.start() # Start thread to screenshot loop
...
screenshot = window_async.screenshot
...
window_async.stop() # Stop thread when not used anymore
Examples
sync
import cv2 as cv
from XWindowSystem_Screenshoter import WindowCaptureSync
wincap = WindowCaptureSync("firefox")
# first capture
image = wincap.get_screenshot()
image = cv.resize(image, (0,0), fx=0.6, fy=0.6)
cv.imshow("Test", image)
while True:
# press c to update image
if cv.waitKey(1) == ord('c'):
image = wincap.get_screenshot()
image = cv.resize(image, (0,0), fx=0.6, fy=0.6)
cv.imshow("Test", image)
if cv.waitKey(1) == ord('q'):
cv.destroyAllWindows()
break
async
import cv2 as cv
from XWindowSystem_Screenshoter import WindowCaptureAsync
wincap = WindowCaptureAsync("firefox")
wincap.start()
while True:
if wincap.screenshot is not None:
image = wincap.screenshot
image = cv.resize(image, (0,0), fx=0.6, fy=0.6)
cv.imshow("Test", image)
if cv.waitKey(1) == ord('q'):
cv.destroyAllWindows()
break
wincap.stop() # don't forget to stop thread!
exit(0)