一、图片转视频
def image2video():
img_root = "./image/"
fps = 25
size = (1280,480)
fourcc = cv2.VideoWriter_fourcc('m', 'p', '4', 'v')
videoWriter = cv2.VideoWriter("./video.mp4", fourcc, fps, size)
images_list = sorted([os.path.join(img_root, file) for file in os.listdir(img_root) if file.endswith('.png')])
print(len(images_list))
for i in range(0, len(images_list)):
frame = cv2.imread(img_root + str(i) + '.png')
videoWriter.write(frame)
if i == len(images_list):
videoWriter.release()
cv2.destroyAllWindows()
break
print("frame number = ",i)
videoWriter.release()
二、视频转图片
def video2image():
image_dir = "./image/"
images_list = sorted([os.path.join(image_dir, file) for file in os.listdir(image_dir) if file.endswith('.png')])
print(len(images_list))
cap = cv2.VideoCapture("./video.mp4")
video_frames = int(cap.get(7))
print(video_frames)
start_cut_frame = 0
cap.set(cv2.CAP_PROP_POS_FRAMES,start_cut_frame)
i = 0
j = len(images_list)
while i < video_frames-1:
ret, frame = cap.read()
if i % 1 == 0:
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
img = Image.fromarray(frame)
print("frame number = ",i)
img_name = image_dir + str(j) + ".png"
j = j + 1
print(img_name)
img.save(img_name)
if cv2.waitKey(1) & 0xFF == ord('q') or i == 200000:
break
i = i + 1
cap.release()
三、图片重命名
def rename_file():
image_dir = "./image/"
file_1 = [int(file[:-4]) for file in os.listdir(image_dir) if file[-4:] == '.png']
file_2 = sorted(file_1)
i = 0
for file in file_2:
newname = str(i) + ".png"
i +=1
os.rename(os.path.join(image_dir,str(file) + ".png"),os.path.join(image_dir,newname))
以上程序的运行需要导入这些库
import copy
import cv2
import os
from PIL import Image
四、视频拼接
from moviepy.editor import *
import os
L = []
for root, dirs, files in os.walk("./Video/"):
files.sort()
for file in files:
if os.path.splitext(file)[1] == '.mp4':
filePath = os.path.join(root, file)
video = VideoFileClip(filePath)
L.append(video)
final_clip = concatenate_videoclips(L)
final_clip.to_videofile("./dstVideo.mp4", fps=25, remove_temp=False)