最近需要做动图,需要从视频中提取帧图片并进行裁剪缩放处理。
#-*- coding: utf-8 -*-
#!/usr/bin/python3
from PIL import Image
import os
import cv2
'''
将视频帧转换为图片
'''
videoPath = '../video.mp4'
frames = cv2.VideoCapture(videoPath)
c = 0
i = 0
timeF = 3
rval=frames.isOpened()
while rval: # 循环读取视频帧
c = c + 1
rval, frame = frames.read()
if (c % timeF == 0) and rval: # 每隔timeF帧进行存储操作
cv2.imwrite(str(i) + '.jpg', frame) # 存储为图像
i = i + 1
frames.release()
'''
# 将图片指定区域裁剪出来并缩放到指定尺寸保存
'''
list = os.listdir('./')
for i in range(0, len(list)):
path = os.path.join(list[i])
if os.path.isfile(path) and path.endswith('jpg'):
img = Image.open(path)
img = img.crop((160, 145, 1436, 936)) # 裁剪图片指定区域
out = img.resize((600, 372), Image.ANTIALIAS) # 缩放图片 抗锯齿
path = path.replace('.jpg', '.png')
path = 's' + path
out.save(path)