一、Matlab方法
clear;
%% 数据文件夹
video_name = './boat';
%圈数:7-78
%帧数:0-45
obj_gray = VideoWriter([video_name,'.avi']);%所转换成的视频名称
%将单张图片存在avi文件
open(obj_gray);
% 图片张数
img_num = 119;
img_path = '';
for ii = 1:img_num
% img_name = ['bkcg_',num2str(ii,'%04d'),'.png'];
img_name = [img_path, num2str(ii),'.jpg'];
img = imread(img_name);
writeVideo(obj_gray, img);
end
close(obj_gray);
二、python
使用opencv来进行。
缺点:宽度超宽,导致ffmpeg难以初始化。(内存分配不够???原因不明)
import cv2
import os
fourcc = cv2.VideoWriter_fourcc('m', 'p', '4', 'v') # 设置输出视频为mp4格式
# cap_fps是帧率,可以根据随意设置
cap_fps = 0.2
# 注意!!!
# size要和图片的size一样,但是通过img.shape得到图像的参数是(height,width,channel),但是此处的size要传的是(width,height),这里一定要注意注意不然结果会打不开,比如通过img.shape得到常用的图片尺寸
size =(468, 9064)
# 设置输出视频的参数,如果是灰度图,可以加上 isColor = 0 这个参数
# video = cv2.VideoWriter('results/result.avi',fourcc, cap_fps, size, isColor=0)
video = cv2.VideoWriter('F:/data/706/01.mp4', fourcc, cap_fps, size, isColor=0)
# 这里直接读取py文件所在目录下的pics目录所有图片。
img_path = 'F:/data/706/01/'
# https://blog.csdn.net/AugustMe/article/details/118524685 关于排序的问题
file_lst = os.listdir(img_path)
file_lst.sort(key=lambda x:int(x.split('.')[0])) # 对‘.’进行切片,并取列表的第一个值(左边的文件名)转化整数型
for filename in file_lst:
img = cv2.imread(img_path + filename)
video.write(img)
video.release()