Create a Screen Recorder Using Python OpenCV – OpenCV Tutorial

By | December 1, 2020

In this tutorial, we will introduce you how to create a screen recorder using python opencv, it is very useful if you want record something.

Preliminary

We should install python opencv and pillow library.

Install Python OpenCV on Windows 10 with Anaconda: A Complete Guide – OpenCV Tutorial

How to create a screen recorder?

We will take the snapshot of the screen using python pillow, then write these images to a video file using python opencv.

How to create a screen recorder using python opencv?

We will tell you how to do step by step.

Import library

# coding: utf-8
from PIL import ImageGrab
import numpy as np
import cv2

Set some options

fps = 20
start = 3  
end = 15

We will set the fps of video is 20, and record 12 seconds.

Get the size of the screen

We will use python pillow ImageGrab to get the size of screen.

curScreen = ImageGrab.grab() 
height, width = curScreen.size

You also can get the size of screen using pyautogui, here is an example:

Python Get Computer Screen Size Using PyAutoGUI: A Beginner Guide – Python Tutorial

Create a video object using opencv

video = cv2.VideoWriter('video.avi', cv2.VideoWriter_fourcc(*'XVID'), fps, (height, width))

We will use fps, the size of screen to create a video object.

Start to record the screen

imageNum = 0
while True:
    imageNum += 1
    captureImage = ImageGrab.grab()  
    frame = cv2.cvtColor(np.array(captureImage), cv2.COLOR_RGB2BGR)
 
    if imageNum > fps * start:
        video.write(frame)
    
    if cv2.waitKey(50) == ord('q') or imageNum > fps * end:
        break
video.release()
cv2.destroyAllWindows()

We will use a while loop to take each frame of video,  then write these frames to video file.

Run this code, you will get a video.avi file.

Create a screen recoder using python opencv

Leave a Reply