Python如何用圖片合成視頻?Python怎么將多張圖片合成視頻

之前的文章中小編給大家介紹過了將視頻拆解成圖片的方法,而這次則是要講解和它相對的一個知識,那就是用多張圖片來合成視頻 。下文有詳細的代碼示例和步驟解析,感興趣的話就一起往下看看吧 。

Python如何用圖片合成視頻?Python怎么將多張圖片合成視頻


1.首先就是要導入模塊,生成視頻需要使用opencv庫,而處理文件夾及其文件需要用到os內置模塊 。而numpy庫是用來完成格式轉換的,示例如下:
import cv2import osimport numpy as npfrom PIL import Image【Python如何用圖片合成視頻?Python怎么將多張圖片合成視頻】2.第二步則是要創建一個文件夾,該文件夾下面只能夠保存生成視頻所需的圖片,并且這些圖片的分辨率都要是一樣的 。而文件按照名稱大小的排序,則決定了合成視頻時它所在的位置,也就是處在視頻哪一秒 。
3.第三步就是要定義一個函數,函數內三個參數表示的意思就是圖片路徑、視頻路徑以及視頻每秒幀數 。先用os模塊獲取到路徑下全部圖片,然后使用sort()方法來讓其按照數字大小排序 。之后就是調用Image模塊的方法來讀取圖片了并獲得圖片分辨率,代碼如下:
def frame2video(im_dir,video_dir,fps):    im_list = os.listdir(im_dir)    im_list.sort(key=lambda x: int(x.replace("frame","").split('.')[0]))     img = Image.open(os.path.join(im_dir,im_list[0]))img_size = img.size
4.第四步則是需要先指定視頻編碼格式并返回一個對象,然后用VideoWriter()方法加上視頻保存路徑、編碼格式對象、幀率以及圖片分辨率來構建出一個視頻寫入對象,也可以稱之為空的視頻 。這個視頻的大小和圖片分辨率相同,代碼如下:
fourcc = cv2.VideoWriter_fourcc(*'XVID') #opencv版本是3videoWriter = cv2.VideoWriter(video_dir, fourcc, fps, img_size)5.第五步需要使用for循環迭代圖片列表,在循環中用變量拼接圖片名稱,然后調用fromfile()方法獲取到圖片并且將其轉為八位圖像格式 。之后再使用write()方法將其寫入到視頻對象中,循環結束就表示視頻已經有足夠的圖片了,示例如下:
for i in im_list:  im_name = os.path.join(im_dir+i)  frame = cv2.imdecode(np.fromfile(im_name, dtype=np.uint8), -1)  videoWriter.write(frame)6.最后則是調用該函數并且傳入指定參數即可,代碼示例如下所示:
if __name__ == '__main__':   frame2video (r'E:\img', r'E:\2.mp4'302)以上就是關于“Python如何用圖片合成視頻?Python怎么將多張圖片合成視頻”的全部內容了,希望對你有所幫助 。

    猜你喜歡