In this Python OpenCV Tutorial, explain how to create a video using NumPy array and images.
Video From NumPy Array
import numpy as np
import cv2
import os
width = 1280
hieght = 720
channel = 3
fps = 30
sec = 5
# Syntax: VideoWriter_fourcc(c1, c2, c3, c4) # Concatenates 4 chars to a fourcc code
# cv2.VideoWriter_fourcc('M','J','P','G') or cv2.VideoWriter_fourcc(*'MJPG)
fourcc = cv2.VideoWriter_fourcc(*'MP42') # FourCC is a 4-byte code used to specify the video codec.
# A video codec is software or hardware that compresses and decompresses digital video.
# In the context of video compression, codec is a portmanteau of encoder and decoder,
# while a device that only compresses is typically called an encoder, and one that only
# decompresses is a decoder. Source - Wikipedia
#Syntax: cv2.VideoWriter( filename, fourcc, fps, frameSize )
video = cv2.VideoWriter('test.mp4', fourcc, float(fps), (width, hieght))
for frame_count in range(fps*sec):
img = np.random.randint(0,255, (hieght, width, channel), dtype = np.uint8)
video.write(img)
video.release()
Video from Images
import numpy as np
import cv2
import os
width = 1280
hieght = 720
channel = 3
fps = 10
sec = 5
fourcc = cv2.VideoWriter_fourcc(*'MP42')
video = cv2.VideoWriter('image_to_video.avi', fourcc, float(fps), (width, hieght))
directry = r'C:\Users\kashz\AI Life\AI Projects - IAIP, PTs (Web + Channel)\02 OpenCV\000 opencv tutorial\data\images'
img_name_list = os.listdir(directry)
for frame_count in range(fps*sec):
img_name = np.random.choice(img_name_list)
img_path = os.path.join(directry, img_name)
img = cv2.imread(img_path)
img_resize = cv2.resize(img, (width, hieght))
video.write(img_resize)
video.release()