52 lines
1.4 KiB
Python
52 lines
1.4 KiB
Python
|
|
import math
|
|
from PIL import Image, ImageDraw
|
|
import random
|
|
import imageio
|
|
import glob
|
|
import os
|
|
import numpy as np
|
|
|
|
|
|
fps = 30
|
|
xmax = 1920
|
|
ymax = 1080
|
|
|
|
length = 1 # in minutes
|
|
numberOfEvents = 4
|
|
|
|
dirname = os.path.dirname(__file__)
|
|
outputPath = os.path.join(dirname, 'out.mp4')
|
|
|
|
def getRandomColorString():
|
|
return '#{:06x}'.format(random.randint(0, 256**3))
|
|
|
|
def genVideo():
|
|
writer = imageio.get_writer(outputPath, fps=fps)
|
|
writer.append_data(np.zeros(shape=[1080, 1920, 3], dtype=np.uint8))
|
|
writer.append_data(np.zeros(shape=[1080, 1920, 3], dtype=np.uint8))
|
|
|
|
for i in range(numberOfEvents):
|
|
objectWidth = (5 + random.randint(0, 5)) * xmax / 100
|
|
objectHeight = (10 + random.randint(-5, 5)) * ymax / 100
|
|
|
|
objectX = random.randint(0, xmax)
|
|
objectY = random.randint(0, ymax)
|
|
|
|
objectSpeedX = random.randint( 1 ,5 )
|
|
objectSpeedY = random.randint( 1, 5 )
|
|
color = getRandomColorString()
|
|
|
|
for j in range(int(fps*length*60 / numberOfEvents)):
|
|
objectX -= objectSpeedX
|
|
objectY -= objectSpeedY
|
|
|
|
objectShape = [(objectX, objectY), (objectX + objectWidth, objectY + objectHeight)]
|
|
img = Image.new("RGB", (xmax, ymax))
|
|
img1 = ImageDraw.Draw(img)
|
|
img1.rectangle(objectShape, fill = color)
|
|
writer.append_data(np.array(img))
|
|
|
|
writer.close()
|
|
|
|
genVideo() |