測試下來發現,imageio 速度比 cv2 的要慢,所以普通保存推薦 cv2,要gpu加速需要額外配置或者修改
imageio
底層也是調用的ffmpeg,以下是python代碼
import imageio
import os# 讀取要保存為視頻的圖片
images = []
for filename in os.listdir('path/to/images/folder'):images.append(imageio.imread('path/to/images/folder/' + filename))# 指定保存視頻的名稱和幀率
video_name = 'output_video.mp4'
fps = 25# 使用 imageio 保存視頻
with imageio.get_writer(video_name, fps=fps) as video_writer:for image in images:video_writer.append_data(image)
在上面的代碼中,我們首先使用 os.listdir() 函數獲取要保存為視頻的所有圖片的文件名,然后使用 imageio.imread() 函數讀取每個文件并將其添加到 images 列表中。接下來,我們指定要保存的視頻的名稱和幀率。最后,我們使用 imageio.get_writer() 函數創建一個視頻寫入器,然后使用 video_writer.append_data() 函數將每個圖像添加到視頻中。
這樣,您就可以使用 imageio 庫保存視頻了。請確保您已經正確指定了要保存的圖片路徑和視頻名稱,并指定了正確的幀率。
cv2
import cv2
import os#圖片路徑
im_dir = '/home/x/out/xxx_imags'
#輸出視頻路徑
video_dir = '/home/xxxx/out/xxxx.avi'
#幀率
fps = 30
#圖片數
num = 426
#圖片尺寸
img_size = (841,1023)#fourcc = cv2.cv.CV_FOURCC('M','J','P','G')#opencv2.4
fourcc = cv2.VideoWriter_fourcc('M','J','P','G') #opencv3.0
videoWriter = cv2.VideoWriter(video_dir, fourcc, fps, img_size)for i in range(1,num):im_name = os.path.join(im_dir, str(i).zfill(6)+'.jpg')frame = cv2.imread(im_name)videoWriter.write(frame)print im_namevideoWriter.release()
print 'finish'
ffmpeg
from : https://blog.csdn.net/xindoo/article/details/121451318
ffmpeg -r 10 -f image2 -i %d.jpeg output1.mp4
GPU加速
可能能加速10倍以上,但是需要安裝GPU版本
Ubuntu上安裝ffmpeg-cuda加速
替換Python的imageio包中自帶的ffmpeg以支持GPU編解碼加速
https://www.jianshu.com/p/59da3d350488