python图像帧到视频

时间:2011-04-07 18:36:17

标签: python image-processing video-encoding

我正在编写一个python / django应用程序,它需要进行图像处理,然后将图像组合成一个视频(每个图像都是一个帧)。图像处理很容易。我正在使用PIL,但是对于转换为视频部分,我被卡住了。我发现pyffmpeg但似乎只是将视频解码为帧,而不是相反。虽然我可能错过了什么。我也听说pythonMagick(imagemagick包装器)可以做到这一点,但我似乎无法在文档中找到有关编码的任何内容。

这是在linux服务器上运行的,必须是python(因为那是应用程序所在的)。

我应该使用什么?

4 个答案:

答案 0 :(得分:7)

使用OpenCV和python绑定。有cv.WriteFrame功能。 Similar question and answer

答案 1 :(得分:2)

你可以使用Popen来在子进程中运行ffmpeg。

答案 2 :(得分:2)

首先使用以下命令安装ffmpeg:sudo apt install ffmpeg

import os
os.system("ffmpeg -f image2 -r 1/5 -i ./images/swissGenevaLake%01d.jpg -vcodec mpeg4 -y ./videos/swissGenevaLake.mp4")

详细说明:

上述代码从三个图像文件创建视频,存储在images文件夹中。每个图像在视频中播放5秒(因为参数:-r 1/5)。三个文件名是:" swissGenevaLake1.jpg"," swissGenevaLake2.jpg"和" swissGenevaLake3.jpg"在图像文件夹中。

希望这有帮助。

答案 3 :(得分:0)

如果您有一个要作为视频构图的图像文件夹。您可以调整参数并以排序方式排列帧。

import cv2
import os
from tqdm import tqdm
import glob
#TODO
image_folder = '<Enter your target frames folder here>/*'
video_name = 'Dir to store the video'#save as .avi
#is changeable but maintain same h&w over all  frames
width=640 
height=400 
#this fourcc best compatible for avi
fourcc = cv2.VideoWriter_fourcc('M','J','P','G')
video=cv2.VideoWriter(video_name,fourcc, 2.0, (width,height))



for i in tqdm((sorted(glob.glob(image_folder),key=os.path.getmtime))):
     x=cv2.imread(i)
     video.write(x)

cv2.destroyAllWindows()
video.release()