import cv2
# Create avi movie from static plots created of each time slice
image_folder = 'path_to_png_files'
video_name = '/mov-{}.avi'.format('optional label')
# Store individual frames into list
images = [img for img in os.listdir(image_folder) if img.endswith(".png")]
# Create frame dimension and store its shape dimensions
frame = cv2.imread(os.path.join(image_folder, images[0]))
height, width, layers = frame.shape
# cv2's VideoWriter object will create a frame
video = cv2.VideoWriter(avi_path + video_name, 0, 1, (width,height))
# Create the video from individual images using for loop
for image in images:
video.write(cv2.imread(os.path.join(image_folder, image)))
# Close all the frames
cv2.destroyAllWindows()
# Release the video write object
video.release()
3条答案
按热度按时间2mbi3lxu1#
我知道的最简单的是使用
imageio
的mimwrite
。字符串
有明显的选项,如持续时间,循环次数等。
您可以在文档中了解到使用
imageio.help('gif')
的其他一些选项。希望能帮上忙。
xfyts7mz2#
更快的方法是使用
imageio
,就像@ShlomiF的answer一样,但是如果你喜欢的话,你也可以用纯matplotlib来做同样的事情:字符串
但如果您的首要任务是输出质量,您可能需要考虑直接使用
ffmpeg
和convert
,的数据
根据需要更改
scale
参数以控制最终输出的大小,scale=-1:-1
保持大小不变。rseugnpd3#
我也发现gif的质量太差,所以寻求一个解决方案,使mp4具有更高的分辨率和播放控制。我还没有找到一个mp4解决方案,但我已经能够使用Python
cv2
库编写.avi电影文件。下面是一个例子:字符串