废话不多说,上代码!
# 把照片合成视频。
import os
import cv2
import uuid
from tqdm import tqdm
def read_picture(images_path):
file_list = os.listdir(images_path) #图像list
fps = 20 # 视频每秒20帧
weight = 1920 # 图像宽高
height = 1080 # 图像宽高
size = (int(weight), int(height)) # 需要转为视频的图片的尺寸
return [fps, size, file_list]
def write_video(images_path, save_video_path):
fps, size, file_list = read_picture(images_path)
# AVI格式编码输出 XVID
four_cc = cv2.VideoWriter_fourcc(*'XVID')
video_writer = cv2.VideoWriter(save_video_path, four_cc, float(fps), size)
# 视频保存在当前目录下
for item in tqdm(file_list, 'make video by images'):
if item.endswith('.jpg'):
text = str(item)
item = images_path + '\\' + item
img = cv2.imread(item)
font = cv2.FONT_HERSHEY_SIMPLEX
font_scale = 3
color = (255, 255, 255)
thickness = 2
text_size, _ = cv2.getTextSize(text, font, font_scale, thickness)
text_x = 10
text_y = 10 + text_size[1]
cv2.putText(img, text, (text_x, text_y), font, font_scale, color, thickness, cv2.LINE_AA)
re_pics = cv2.resize(img, size, interpolation=cv2.INTER_CUBIC) # 定尺寸
if len(re_pics):
video_writer.write(re_pics)
video_writer.release()
cv2.destroyAllWindows()
if __name__ == '__main__':
# 图像地址
images_path = '\\images'
#视频保存路径
save_video_path = 'video.avi'
write_video(images_path, save_video_path)