usage example: python video2jpg.py --video 1574393815.avi --out_dir 1574393815
# video2jpg.py
import os
import cv2
import argparse
def video2jpg(video_name, out_dir):
cap = cv2.VideoCapture(video_name)
i = 0
while cap.isOpened():
ret, frame = cap.read()
if frame is None:
break
cv2.imwrite(f'{out_dir}/%05d.jpg' % i, frame)
i += 1
cap.release()
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('--video', type=str, help='example.avi')
parser.add_argument('--out_dir', type=str, help='./example')
args = parser.parse_args()
if not os.path.exists(args.out_dir):
os.makedirs(args.out_dir)
video2jpg(args.video, args.out_dir)
usage example: python jpg2video.py --in_dir 1574393815 --out_dir ./ --fps 25 --out_height 640 --out_width 480
# jpg2video.py
import os
from cv2 import VideoWriter, VideoWriter_fourcc, imread, resize
import argparse
def write(images, outimg=None, fps=5, size=None, is_color=True, format="XVID", outvid='demo.avi'):
fourcc = VideoWriter_fourcc(*format)
vid = None
for image in images:
if image.split('.')[-1] != 'jpg':
continue
img = imread(image)
if vid is None:
if size is None:
size = img.shape[1], img.shape[0]
vid = VideoWriter(outvid, fourcc, float(fps), size, is_color)
if size[0] != img.shape[1] and size[1] != img.shape[0]:
img = resize(img, size)
vid.write(img)
vid.release()
return vid
def jpg2video(in_dir, out_dir, fps, out_size):
filenames = os.listdir(in_dir)
filenames = sorted(filenames)
filenamex = [os.path.join(in_dir, x) for x in filenames]
video_name = in_dir.split('/')[-1] + '.avi'
write(filenamex, fps=fps, size=out_size, outvid=os.path.join(out_dir, video_name))
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('--in_dir', type=str, help='./example')
parser.add_argument('--out_dir', type=str, help='./')
parser.add_argument('--fps', type=int, help='25')
parser.add_argument('--out_height', type=int, help='640')
parser.add_argument('--out_width', type=int, help='480')
args = parser.parse_args()
jpg2video(args.in_dir, args.out_dir, args.fps, (args.out_width, args.out_height))
合成好的视频如果打不开,可能是电脑上缺少合适的视频解码器。在mac上推荐使用IINA player。
使用ffmpeg将图像转为视频
参考 https://blog.csdn.net/xiangxianghehe/article/details/104562437
cat *.jpg | ffmpeg -f image2pipe -vcodec mjpeg -i - -c:v h264 -r 24 output.mp4
注意会按字典序对图像名进行排列并生成视频。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。