take screenshots using python code example

Example 1: screenshot in python

import pyautogui


class gng() :
    myScreenshot = pyautogui.screenshot()
    myScreenshot.save('C:\File\Code\save.png')


gng()

Example 2: screenshot taker python

from tkinter.filedialog import *
import pyautogui
import tkinter

root = Tk()
root.title('Take A Screenshot')
root.geometry('300x300')

canvas = tkinter.Canvas(root, width=300, height=300)
canvas.pack()


def takeScreenshot():
    img = pyautogui.screenshot()
    savePath = asksaveasfilename()
    if not ('.png' in savePath): savePath = savePath + '.png'
    img.save(savePath)

button = tkinter.Button(text="Take a Screenschot", command=takeScreenshot, font=10)
canvas.create_window(150, 150, window=button)

root.mainloop()

Example 3: 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)
  '''

  #initializing local variables
  step = step
  frames_count = count

  currentframe = 0
  frames_captured = 0

  #creating a folder
  try:  
      # creating a folder named data 
      if not os.path.exists(outputFolder): 
          os.makedirs(outputFolder) 
    
  #if not created then raise error 
  except OSError: 
      print ('Error! Could not create a directory') 
  
  #reading the video from specified path 
  cam = cv2.VideoCapture(inputFile) 

  #reading the number of frames at that particular second
  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
              #saving the frames (screenshots)
              name = './data/frame' + str(frames_captured) + '.jpg'
              print ('Creating...' + name) 
              
              cv2.imwrite(name, frame)       
              frames_captured+=1
              
              #breaking the loop when count achieved
              if frames_captured > frames_count-1:
                ret = False
          currentframe += 1           
      if ret == False:
          break
  
  #Releasing all space and windows once done
  cam.release()
  cv2.destroyAllWindows()