20 lines
878 B
Python
20 lines
878 B
Python
import sys
|
|
sys.path.insert(0,'.tools')
|
|
import cv2
|
|
from PIL import Image, ImageDraw
|
|
from pathlib import Path
|
|
out=Path('reference/motion');out.mkdir(parents=True,exist_ok=True)
|
|
v=cv2.VideoCapture(str(next(Path('.').glob('*.mp4'))));fps=v.get(cv2.CAP_PROP_FPS)
|
|
v.set(cv2.CAP_PROP_POS_FRAMES,26*25)
|
|
for frame in range(650,1001):
|
|
ok,im=v.read()
|
|
if not ok:break
|
|
cv2.imwrite(str(out/f'{frame:04}.jpg'),im,[cv2.IMWRITE_JPEG_QUALITY,88])
|
|
for start in [27,29,31,33,35,37]:
|
|
sheet=Image.new('RGB',(1920,1536),'#282828');d=ImageDraw.Draw(sheet)
|
|
for i in range(12):
|
|
fr=round((start+i/6)*25);im=Image.open(out/f'{fr:04}.jpg');im.thumbnail((640,360));x=(i%3)*640;y=(i//3)*384
|
|
sheet.paste(im,(x,y+24));d.text((x+12,y+5),f'{fr/25:.2f}s FRAME {fr}',fill='white')
|
|
sheet.save(out/f'sequence-{start}.jpg',quality=94)
|
|
print('Extracted 351 consecutive frames at 25fps and 6 contact sheets')
|