python take a live screenshot of specific area code example
Example 1: python capture desktop as video source
import numpy as np
import cv2
from mss import mss
from PIL import Image
bounding_box = {'top': 100, 'left': 0, 'width': 400, 'height': 300}
sct = mss()
while True:
sct_img = sct.grab(bounding_box)
cv2.imshow('screen', np.array(sct_img))
if (cv2.waitKey(1) & 0xFF) == ord('q'):
cv2.destroyAllWindows()
break
Example 2: take screenshot of video python
import cv2
import os
import time
def get_frames(inputFile,outputFolder,step,count):
'''
Input:
inputFile - name of the input file with directoy
outputFolder - name and path of the folder to save the results
step - time lapse between each step (in seconds)
count - number of screenshots
Output:
'count' number of screenshots that are 'step' seconds apart created from video 'inputFile' and stored in folder 'outputFolder'
Function Call:
get_frames("test.mp4", 'data', 10, 10)
'''
step = step
frames_count = count
currentframe = 0
frames_captured = 0
try:
if not os.path.exists(outputFolder):
os.makedirs(outputFolder)
except OSError:
print ('Error! Could not create a directory')
cam = cv2.VideoCapture(inputFile)
frame_per_second = cam.get(cv2.CAP_PROP_FPS)
while (True):
ret, frame = cam.read()
if ret:
if currentframe > (step*frame_per_second):
currentframe = 0
name = './data/frame' + str(frames_captured) + '.jpg'
print ('Creating...' + name)
cv2.imwrite(name, frame)
frames_captured+=1
if frames_captured > frames_count-1:
ret = False
currentframe += 1
if ret == False:
break
cam.release()
cv2.destroyAllWindows()