Python將多個視頻幀組合成.mp4視頻

已經有很多文章描述了如何將視頻拆分成視頻幀,例如:https://blog.csdn.net/WYKB_Mr_Q/article/details/124929081

那我們如何將很多視頻幀重新組合成視頻呢?

這里我們主要用到了 OpenCV 庫中的 VideoWriter 類。

OpenCV種的 cv2.VideoWriter 類可以將圖片序列保存成視頻文件,也可以修改視頻的各種屬性,還可以完成對視頻類型的轉換。該類種常用的函數包括:構造函數、write 函數等。

1、構造函數
OpenCV中的cv2.Video_fourcc()用來指定視頻編碼格式:

fourcc = cv2.VideoWriter_fourcc(*'mp4v')  # MP4格式

上述代碼指定視頻寫入器的格式為 .mp4 格式。需要注意到’mp4v’中的英文字母,要么全大寫,要么全小寫。
保存為其它視頻參考格式如下:

支持avi格式:

I420,YUV編碼,視頻格式為.avi
PIM1,MPEG-1編碼,視頻格式為.avi
XVID,MPEG-4編碼,視頻格式為.avi

其他編碼器

THEO,Ogg Vorbis,視頻格式為.ogv
FLV1,Flash視頻,視頻格式為.flv
AVC1,H264編碼
DIV3,MPEG-4.3編碼
DIVX,MPEG-4編碼
MP42,MPEG-4.2編碼
MJPG,motion-jpeg編碼
U263,H263編碼
I263,H263I編碼

設置完視頻寫入格式之后,需要完成對象創建,比如設置視頻的幀率,視頻幀的長和寬等參數。這里我們主要用到了cv2.VideoWriter()函數。

 videowrite = cv2.VideoWriter(save_video_path, fourcc, fps=15, frameSize=(w, h)) 

其中,save_video_path參數表示合成之后視頻保存的路徑及名稱;fourcc表示上述編碼格式;fps就是幀率,即每秒播放多少張圖片;frameSize表示保存視頻的寬和高。

2、write函數
cv2.VideoWriter.write()用于寫入下一幀視頻。

videowrite.write(img)

其中,img表示讀取到的視頻幀數據。

3、釋放
釋放該類對象時所使用的是函數cv2.VideoWriter.release()。該函數的語法格式是:

videowrite.release()

在制作視頻時,不用這個也沒關系。

下面是完整的代碼:

import cv2
import os# 視頻幀放置的文件夾路徑,假如有多組視頻幀,在frames文件夾下可放置多個文件夾
frame_path = r"E:\data\frames"
# 生成視頻存放的文件夾路徑
video_path = r"E:\datas\videos"for root, dirs, files in os.walk(frame_path):# 一個文件夾中的第幾個視頻幀i = 0for file in files:# 讀取圖像的地址img_path = os.path.join(root, file)img = cv2.imread(img_path)h, w, c = img.shapei += 1# 如果是第一個視頻幀,則構造視頻對象if i == 1:# 保存視頻的地址dir_lis = root.split("\\")save_videos_path = os.path.join(video_path, dir_lis[-3], dir_lis[-2])# 如果路徑不存在,則創建文件夾if not os.path.exists(save_videos_path):os.makedirs(save_videos_path)# 加入文件名save_video_path = os.path.join(save_videos_path, dir_lis[-1] + '.mp4')# 設置視頻寫入器fourcc = cv2.VideoWriter_fourcc(*'mp4v')  # MP4格式# 完成寫入對象的創建,第一個參數是合成之后的視頻的名稱,第二個參數是可以使用的編碼器,第三個參數是幀率即每秒鐘展示多少張圖片,第四個參數是圖片大小信息videowrite = cv2.VideoWriter(save_video_path, fourcc, fps=15, frameSize=(w, h))  # 2是每秒的幀數,size是圖片尺寸# 將視頻幀寫入視頻對象中videowrite.write(img)print("第{}張圖像合成成功".format(i))print('------done!!!------')

參考鏈接:https://zhuanlan.zhihu.com/p/399689868

日常學習記錄,一起交流討論吧!侵權聯系~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/163900.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/163900.shtml
英文地址,請注明出處:http://en.pswp.cn/news/163900.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

jdbc批量插入或更新數據

mybatis可以批量插入或更新數據,不過mybatis底層也是基于jdbc來實現的,如何使用jdbc批量操作數據?本文給出demo。 /*** JDBC分批次批量插入* * throws IOException*/public static void testJDBCBatchInsertUser() throws IOException {Conne…

工作流引擎的架構設計主要考慮以下方面

工作流引擎的架構設計主要考慮以下方面,以馳騁工作流引擎為例來說明。 高度抽象和封裝:為了適應各種業務場景,工作流引擎應具備高度抽象和封裝的特性,以便統一處理各流程。靈活配置:工作流引擎應支持靈活的配置&#…

Linux之實現簡易的shell

1.打印提示符并獲取命令行 我們在使用shell的時候&#xff0c;發現我們在輸入命令是&#xff0c;前面會有&#xff1a;有用戶名&#xff0c;版本&#xff0c;當前路徑等信息&#xff0c;這里我們可以用環境變量去獲取: 1 #include <stdio.h>2 #include <stdlib.h>…

python如何快速查找到想要的文檔

字多不看版&#xff0c;直接體驗 待補充 演示代碼 # -*- coding:UTF-8 -*-# region 導入必要的依賴包 import os import subprocess from enum import Enum模塊名 pyperclip try:import pyperclip # 需要安裝 pyperclip 模塊&#xff0c;以支持粘貼板操作 except ImportEr…

PTA-成績轉換

本題要求編寫程序將一個百分制成績轉換為五分制成績。轉換規則&#xff1a; 大于等于90分為A&#xff1b;小于90且大于等于80為B&#xff1b;小于80且大于等于70為C&#xff1b;小于70且大于等于60為D&#xff1b;小于60為E。 輸入格式: 輸入在一行中給出一個整數的百分制成…

羊大師教你如何科學控制體重,輕松瘦下來

羊大師教你如何科學控制體重&#xff0c;輕松瘦下來 我們都知道&#xff0c;控制體重對于保持健康和美麗至關重要。然而&#xff0c;許多人在減肥的道路上走得波折重重&#xff0c;常常陷入挫敗和不知所措的境地。那么&#xff0c;如何科學控制體重&#xff0c;輕松瘦下來呢&a…

項目經理只需要有PMP證書就行?

就目前而言&#xff0c;大部分人對于項目經理的認識還停留在&#xff1a;有項目管理經驗&#xff0c;有對應的工作年限&#xff0c;有PMP證書。所以絕大多數人都認為只要報考了PMP項目管理&#xff0c;取得PMP證書&#xff0c;即可加入項目經理的圈子&#xff0c;薪資翻倍。 但…

協同過濾與矩陣分解講解(PPT)

總覽 協同過濾算法&#xff0c;就是一種完全依賴用戶和物品之間行為關系的推薦算法。 從字面理解&#xff0c;協同大家的反饋、評價和意見一起對海量的信息進行過濾&#xff0c;從中篩選出用戶可能感興趣的信息。 知識概括 從這幾個方面進行分析。 一、基于用戶的協同過濾 顯示…

6個PPT素材網站,讓你快速做出好看的PPT

找PPT模板一定要收藏好這6個網站&#xff0c;能讓你快速做出好看的PPT&#xff0c;重點十可以免費下載&#xff0c;趕緊收藏&#xff01; 1、菜鳥圖庫 https://www.sucai999.com/search/ppt/0_0_0_1.html?vNTYwNDUx 菜鳥圖庫網有非常豐富的免費素材&#xff0c;像設計類、辦公…

力扣labuladong——一刷day48

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 前言一、力扣1602. 找到二叉樹中最近的右側節點二、力扣437. 路徑總和 III三、力扣560. 和為 K 的子數組 前言 二叉樹的遞歸分為「遍歷」和「分解問題」兩種思維模式…

第7章-使用統計方法進行變量有效性測試-7.4.2-多元線性回歸

目錄 多元線性回歸模型 總體回歸函數 樣本回歸函數 線性回歸模型的假定 普通最小二乘法&#xff08;Ordinary Least Squares&#xff0c;OLS&#xff09; 擬合優度指標 F檢驗 回歸系數的t檢驗 Python中構建多元線性回歸模型 數據理解 數據讀取 數據清洗 相關分析 …

想考教師編制專業不對口怎么辦?

很多人在想要步入教師行業時&#xff0c;會遇到一個問題&#xff1a;專業不對口。這種情況可能會讓你感到困惑和沮喪&#xff0c;但不要氣餒&#xff0c;因為有很多方法可以讓你實現自己的夢想。 可以通過提高自己的教育水平和能力來彌補專業不對口的缺陷。你可以通過參加教師資…

品牌小紅書koc投放策略分享,純干貨!

作為中國具有影響力的時尚美妝社交平臺&#xff0c;小紅書與其充滿活力的用戶群體成為品牌尋找優質KOC合作的理想平臺。本文伯樂網絡傳媒將探討品牌如何利用小紅書的KOC投放策略&#xff0c;實現更廣泛的市場覆蓋和更有效的品牌營銷。 一、明確目標受眾與KOC合作需求 在開始策…

containerd Snapshots功能解析

containerd Snapshots功能解析 snapshot是containerd的一個核心功能&#xff0c;用于創建和管理容器的文件系統。 本篇containerd版本為v1.7.9。 本文以 ctr i pull命令為例&#xff0c;分析containerd的snapshot “創建” 相關的功能。 ctr命令 ctr image相關命令的實現在cmd…

《人件》讀書筆記

文章目錄 一、書名和作者二、書籍概覽2.1 主要論點和結構2.2 目標讀者和應用場景 三、核心觀點與主題3.1 管理團隊主題3.2 改善工作環境主題3.3 正確的人主題3.4 團隊項目管理主題 四、亮點與啟發4.1 最有影響的觀點4.2 對個人專業發展的啟示 五、批評與局限性5.1 可能存在爭議…

leetcode (力扣) 97. 交錯字符串(動態規劃)

文章目錄 題目描述思路分析完整代碼 題目描述 給定三個字符串 s1、s2、s3&#xff0c;請你幫忙驗證 s3 是否是由 s1 和 s2 交錯 組成的。 兩個字符串 s 和 t 交錯 的定義與過程如下&#xff0c;其中每個字符串都會被分割成若干 非空 子字符串&#xff1a; s s1 s2 … sn t …

數據庫——查詢連續的月份

一、GP或PGSQL with recursive t(n) as (select date(2023-01-01) union all select n1 from t where n < now()) select to_char(n, yyyy-mm) as ny from t group by ny order by ny 二、Hive select add_months(FROM_UNIXTIME(unix_timestamp(SUBSTR(start_date, 1, 7…

rdf-file:組件內置協議(SP、DE、FUND、FUND_INDEX)

Rdf-File根據協議布局模板和數據定義模板,來進行文件的解析與生成。通過協議布局和數據定義模板&#xff0c;能夠明確計算出頭尾占用的行數&#xff0c;這樣可以更精確的分離出head&#xff0c;body&#xff0c;tail。 目前組件實現的協議布局模板可以分為如下兩大類&#xff…

【深度學習實驗】圖像處理(一):Python Imaging Library(PIL)庫:圖像讀取、寫入、復制、粘貼、幾何變換、圖像增強、圖像濾波

文章目錄 一、實驗介紹二、實驗環境1. 配置虛擬環境2. 庫版本介紹 三、實驗內容0. 安裝 PIL 庫1. 圖像讀取和寫入a. 圖像讀取b. 圖像寫入c. 構建新圖像 2. 圖像復制粘貼a. 圖像復制b. 圖像局部復制c. 圖像粘貼 3. 幾何變換a. 圖像調整大小b. 圖像旋轉c. 圖像翻轉 4. 圖像增強a.…

cocos creator中AStar算法實例

引擎版本 —— cocos creator2.3.4