Python實(shí)現(xiàn)多視頻畫(huà)面拼接
利用Python實(shí)現(xiàn)多視頻畫(huà)面拼接
第一行為原始視頻,第二行為分割處理后的視頻,拼接實(shí)現(xiàn)效果如下:

完整代碼
import cv2
import numpy as np
import os
# 設(shè)置原始視頻文件夾路徑.
input_folder = "C:/Users/Administrator/Desktop/output" # 替換為你的輸入文件夾路徑.
output_file = 'C:/Users/Administrator/Desktop/combined_video.mp4' # 輸出文件名.
# 指定視頻的順序.
video_indices = [1, 2, 3] # 假設(shè)你的視頻編號(hào)從1到3.
# 收集視頻文件名.
original_videos = []
segmentation_videos = []
for index in video_indices:
original_videos.append(os.path.join(input_folder, f'resized_test_video{index}.mp4'))
segmentation_videos.append(os.path.join(input_folder, f'resized_output_video{index}.mp4'))
# 確保視頻數(shù)量匹配.
if len(original_videos) != len(segmentation_videos):
print("原始視頻和分割視頻數(shù)量不匹配!")
exit()
# 初始化VideoCapture對(duì)象.
caps = [cv2.VideoCapture(v) for v in original_videos + segmentation_videos]
# 獲取視頻幀的寬高(確保所有視頻具有相同分辨率).
frame_width = int(caps[0].get(cv2.CAP_PROP_FRAME_WIDTH))
frame_height = int(caps[0].get(cv2.CAP_PROP_FRAME_HEIGHT))
# 設(shè)置輸出視頻的參數(shù).
output_width = frame_width * 3
output_height = frame_height * 2
fps = caps[0].get(cv2.CAP_PROP_FPS)
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
# 創(chuàng)建 VideoWriter 對(duì)象.
out = cv2.VideoWriter(output_file, fourcc, fps, (output_width, output_height))
while True:
frames = []
# 讀取所有視頻的當(dāng)前幀.
for cap in caps:
ret, frame = cap.read()
if not ret:
frames.append(None) # 添加空幀以保持一致性.
else:
# Resize frame if needed
frame = cv2.resize(frame, (frame_width, frame_height))
frames.append(frame)
# 檢查是否所有視頻都已經(jīng)結(jié)束.
if all(frame is None for frame in frames):
break
# 創(chuàng)建一個(gè)大畫(huà)面,只合并有效幀.
valid_frames = [frame for frame in frames if frame is not None]
# 檢查是否有足夠的有效幀進(jìn)行合并.
if len(valid_frames) == 6:
top_row = np.hstack((valid_frames[0], valid_frames[1], valid_frames[2]))
bottom_row = np.hstack((valid_frames[3], valid_frames[4], valid_frames[5]))
combined_frame = np.vstack((top_row, bottom_row))
# 寫(xiě)入合成幀到輸出文件.
out.write(combined_frame)
else:
print("當(dāng)前幀無(wú)效,無(wú)法進(jìn)行合并。")
# 釋放資源.
for cap in caps:
cap.release()
out.release()
print('視頻合并完成!輸出文件:', output_file)
# 實(shí)現(xiàn)效果. from IPython.display import Video Video(filename='./輸出效果/combined_video.mp4', width=450, height=330)
處理效果如下
到此這篇關(guān)于Python實(shí)現(xiàn)多視頻畫(huà)面拼接的文章就介紹到這了,更多相關(guān)Python視頻畫(huà)面拼接內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python輪播圖與導(dǎo)航欄功能的實(shí)現(xiàn)流程全講解
這篇文章主要介紹了Python項(xiàng)目輪播圖功能實(shí)現(xiàn)和導(dǎo)航欄的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2022-09-09
Django中使用CORS實(shí)現(xiàn)跨域請(qǐng)求過(guò)程解析
這篇文章主要介紹了Django中使用CORS實(shí)現(xiàn)跨域請(qǐng)求過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
python實(shí)現(xiàn)二級(jí)登陸菜單及安裝過(guò)程
這篇文章主要介紹了python實(shí)現(xiàn)二級(jí)登陸菜單及安裝過(guò)程,,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-06-06
Python3實(shí)現(xiàn)旋轉(zhuǎn)數(shù)組的3種算法小結(jié)
旋轉(zhuǎn)數(shù)組是一種常見(jiàn)的數(shù)據(jù)結(jié)構(gòu)問(wèn)題,通常是指一個(gè)有序數(shù)組經(jīng)過(guò)旋轉(zhuǎn)后,使得所有元素逆序排列,本文主要介紹了Python3實(shí)現(xiàn)旋轉(zhuǎn)數(shù)組的3種算法小結(jié),感興趣的可以了解一下2023-12-12
python基于pygame實(shí)現(xiàn)響應(yīng)游戲中事件的方法(附源碼)
這篇文章主要介紹了python基于pygame實(shí)現(xiàn)響應(yīng)游戲中事件的方法,實(shí)例分析了Python基于pygame針對(duì)鍵盤(pán)及鼠標(biāo)事件的響應(yīng)方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11
利用python實(shí)現(xiàn)聚類分析K-means算法的詳細(xì)過(guò)程
K-means算法是很典型的基于距離的聚類算法,采用距離作為相似性的評(píng)價(jià)指標(biāo),即認(rèn)為兩個(gè)對(duì)象的距離越近,其相似度就越大,下面通過(guò)本文給大家介紹利用python實(shí)現(xiàn)聚類分析K-means算法的詳細(xì)過(guò)程,感興趣的朋友一起看看吧2021-11-11
python 使用遞歸的方式實(shí)現(xiàn)語(yǔ)義圖片分割功能
這篇文章主要介紹了python 使用遞歸的方式實(shí)現(xiàn)語(yǔ)義圖片分割,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
Python應(yīng)用開(kāi)發(fā)頻繁假死的問(wèn)題分析及解決
最近在開(kāi)發(fā)一款自動(dòng)化的應(yīng)用,但是,在測(cè)試時(shí),卻發(fā)現(xiàn)了問(wèn)題,當(dāng)我點(diǎn)擊暫停任務(wù)后,此時(shí)子線程被阻塞,如果我這個(gè)時(shí)候點(diǎn)擊停止,那么就會(huì)任務(wù)結(jié)束,之后,如果我再點(diǎn)擊開(kāi)始運(yùn)行,整個(gè)應(yīng)用就會(huì)卡死,所以本文介紹了Python應(yīng)用開(kāi)發(fā)頻繁假死的問(wèn)題分析及解決,需要的朋友可以參考下2024-08-08

