Initial commit: RHINE LAB · ANALYSIS OS:三维界面与动效实验(本仓库不含个人归档索引数据)
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
import sys
|
||||
from pathlib import Path
|
||||
root=next(p for p in Path(__file__).resolve().parents if any(p.glob('*.mp4')))
|
||||
for parent in Path(__file__).resolve().parents:
|
||||
if (parent/'.tools').is_dir():sys.path.insert(0,str(parent/'.tools'))
|
||||
import cv2
|
||||
from PIL import Image,ImageDraw
|
||||
out=Path('reference/boot-frames');out.mkdir(parents=True,exist_ok=True)
|
||||
v=cv2.VideoCapture(str(next(root.glob('*.mp4'))))
|
||||
print('VIDEO',v.get(3),v.get(4),v.get(5),v.get(7))
|
||||
v.set(cv2.CAP_PROP_POS_FRAMES,125)
|
||||
for fr in range(125,676):
|
||||
ok,im=v.read()
|
||||
if not ok:break
|
||||
cv2.imwrite(str(out/f'{fr:04}.jpg'),im,[cv2.IMWRITE_JPEG_QUALITY,94])
|
||||
sheet=Image.new('RGB',(1600,1845),'#242424');d=ImageDraw.Draw(sheet)
|
||||
for i,fr in enumerate(range(125,676,12)):
|
||||
im=Image.open(out/f'{fr:04}.jpg');im.thumbnail((320,180));x=i%5*320;y=i//5*200
|
||||
sheet.paste(im,(x,y+20));d.text((x+8,y+3),f'{fr/25:.2f}s / {fr}',fill='white')
|
||||
sheet.save(out/'overview.jpg',quality=95)
|
||||
for sec in range(5,27):
|
||||
sheet=Image.new('RGB',(1920,1200),'#242424');d=ImageDraw.Draw(sheet)
|
||||
for i in range(25):
|
||||
fr=sec*25+i;im=Image.open(out/f'{fr:04}.jpg');im.thumbnail((384,216));x=i%5*384;y=i//5*240
|
||||
sheet.paste(im,(x,y+24));d.text((x+8,y+5),f'{fr/25:.2f}s / {fr}',fill='white')
|
||||
sheet.save(out/f'second-{sec:02}.jpg',quality=95)
|
||||
print('Extracted',551,'frames and 22 consecutive-frame sheets')
|
||||
Image.open(out/'0337.jpg').crop((45,105,350,233)).resize((915,384)).save(out.parent/'brand-original.jpg',quality=97)
|
||||
Reference in New Issue
Block a user