opencv视频抽帧 图片合成视频
opencv视频抽帧 video2img
# -*- coding:utf8 -*-
import os
import cv2
def get_frame_from_video(video_name, savepath, interval):
filepath,filename = os.path.split(video_name)
filename_temp = filename.split(.)[0]
save_path_temp = os.path.join(savepath,video_name.split(/)[6])+/
if not os.path.exists(save_path_temp):
os.makedirs(save_path_temp)
i = 0
j = 0
video_capture = cv2.VideoCapture(video_name)
while True:
success, frame = video_capture.read()
i += 1
if i % interval == 0:
j += 1
save_path = save_path_temp + filename_temp + _+ str(j) + _ + str(i) + .jpg
if frame is None:
print(############img is None:,save_path)
continue
else:
cv2.imwrite(save_path, frame)
if not success:
print(video is all read)
break
if __name__ == __main__:
mode = 2
interval = 30
savepath = save/to/path
os.makedirs(savepath)
if mode == 1:
video_name = demo.mp4
get_frame_from_video(video_name, savepath, interval)
if mode == 2:
video_list = demo.txt
f = open(video_list,r)
lines = f.readlines()
for line in lines:
videopath = line.strip().split( )[0]
print(videopath,videopath)
get_frame_from_video(videopath, savepath, interval)
图片合成视频 img2video
import cv2
import glob
def resize(img_array, align_mode):
_height = len(img_array[0])
_width = len(img_array[0][0])
for i in range(1, len(img_array)):
img = img_array[i]
height = len(img)
width = len(img[0])
if align_mode == smallest:
if height < _height:
_height = height
if width < _width:
_width = width
else:
if height > _height:
_height = height
if width > _width:
_width = width
for i in range(0, len(img_array)):
img1 = cv2.resize(img_array[i], (_width, _height), interpolation=cv2.INTER_CUBIC)
img_array[i] = img1
return img_array, (_width, _height)
def images_to_video(path):
img_array = []
for filename in glob.glob(path+/*.png):
img = cv2.imread(filename)
if img is None:
print(filename + " is error!")
continue
img_array.append(img)
img_array, size = resize(img_array, largest)
fps = 30
out = cv2.VideoWriter(demo.avi, cv2.VideoWriter_fourcc(*DIVX), fps, size) #saved .avi
#out = cv2.VideoWriter(demo.mp4, cv2.VideoWriter_fourcc(*mp4v), fps, size) #saved .mp4
for i in range(len(img_array)):
out.write(img_array[i])
out.release()
def main():
path = "path/to/images"
images_to_video(path)
if __name__ == "__main__":
main()
图片合成视频 img2video
import os
import cv2
import numpy as np
path = /home/work/deploy/data/
filelist = os.listdir(path)
fps = 60 #
size = (1280, 720)
#video = cv2.VideoWriter("VideoTest1.avi", cv2.VideoWriter_fourcc(I, 4, 2, 0), fps, size)
video = cv2.VideoWriter(blue_demo.mp4, cv2.VideoWriter_fourcc(*mp4v), fps, size)
idx=1
for item in filelist:
if item.endswith(.jpg):
item = path + item
img = cv2.imread(item)
if img is None:
print(img is None,item)
continue
idx+=1
video.write(img)
video.release()
img2video参考:https://blog..net/choumin/article/details/90319477
