視頻mp4垂直拼接 水平拼接

視頻mp4垂直拼接 水平拼接

pinjie_v.py

import imageio
import numpy as np
import os
import cv2def pinjie_v(dir1,dir2,out_dir):os.makedirs(out_dir, exist_ok=True)# 獲取目錄下的所有視頻文件video_files_1 = [f for f in os.listdir(dir1) if f.endswith('.mp4')]video_files_2 = [f for f in os.listdir(dir2) if f.endswith('.mp4')]# 確保兩個目錄下的視頻文件是同名的common_files = set(video_files_1).intersection(video_files_2)# 如果沒有同名視頻,退出if not common_files:print("沒有同名的視頻文件。")exit()for video_name in common_files:print(f"處理視頻: {video_name}")# if "user-4fd103ee-38d4-43c5-bb2a-f496d2fe065e" not in video_name:#     continue# 打開視頻文件video_path_1 = os.path.join(dir1, video_name)video_path_2 = os.path.join(dir2, video_name)reader1 = imageio.get_reader(video_path_1)reader2 = imageio.get_reader(video_path_2)# 獲取視頻信息(假設兩個視頻有相同幀數)fps = reader1.get_meta_data()['fps']num_frames = min(reader1.count_frames(), reader2.count_frames())# 創建輸出文件output_path = os.path.join(out_dir, f"v_{video_name}")# writer = imageio.get_writer(output_path, fps=fps)if os.path.exists(output_path):continueouts = []# 逐幀處理for i in range(num_frames):frame1 = reader1.get_data(i)frame2 = reader2.get_data(i)# 獲取幀的高度和寬度height1, width1, _ = frame1.shapeheight2, width2, _ = frame2.shapeif height1 > width1:if height1 != height2:y_scale = height1 / height2frame2 = cv2.resize(frame2, (int(width2 * y_scale), height1), interpolation=cv2.INTER_AREA)elif height1 <= width1:if width1 != width2:x_scale = width1 / width2frame2 = cv2.resize(frame2, (width1, int(height2 * x_scale)), interpolation=cv2.INTER_AREA)if height1 > width1:frame = np.hstack([frame1, frame2])else:frame = np.vstack([frame1, frame2])outs.append(frame)try:imageio.mimsave(f'{output_path}', outs, fps=fps, macro_block_size=None)except Exception as e:print(e)# writer.close()print(f"視頻 {video_name} 拼接完成,保存在 {output_path}")if __name__ == '__main__':# 設置目錄路徑dir1 = r'E:\project\smpl\render_blender\linux\hmr_res'dir2 = r'E:\project\smpl\render_blender\linux\hmr2_res'dir1 = r'E:\project\smpl\render_blender\linux\val_out_depth_any_color'dir2 = r'E:\project\smpl\render_blender\linux\val_out_video'dir1 = r'E:\project\smpl\render_blender\linux\val_out_depth_any_color'dir2 = r'E:\project\smpl\render_blender\linux\val_out_video'dir1=r'E:\project\smpl\render_blender\linux\test_lbg_o'dir2 =r'E:\project\smpl\render_blender\linux\test_lbg6'out_dir = 'track_diff'pinjie_v(dir1,dir2,out_dir)

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

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

相關文章

Unity攝像機與燈光相關知識

一、Inspector窗口 Inspector窗口可以查看和編輯對象的屬性以及設置 其中包含各種組件&#xff0c;例如用Cube對象來舉例 1.Sphere(Mesh)組件&#xff1a; 用來決定對象的網格屬性&#xff0c;例如球體網格為Sphere、立方體網格為Cube 2.Mesh Renderer組件&#xff1a; 用來設置…

C++(17):為optional類型構造對象

C++(17):optional,多了一個合理的選擇_c++17 max-CSDN博客 介紹了optional做為函數返回值的一種方式 其實optional也可以作為對象來使用 #include &

探索關鍵領域的AI工具:機器學習、深度學習、計算機視覺與自然語言處理

引言 在人工智能(AI)迅猛發展的今天&#xff0c;機器學習(ML)、深度學習(DL)、計算機視覺(CV)和自然語言處理(NLP)已經成為解決復雜問題的關鍵技術。無論是自動駕駛車輛的視覺識別&#xff0c;還是智能助手的對話理解&#xff0c;這些技術都在改變著世界。本文將介紹在各個領域…

基于vue和微信小程序的校園自助打印系統(springboot論文源碼調試講解)

第3章 系統設計 3.1系統功能結構設計 本系統的結構分為管理員和用戶、店長。本系統的功能結構圖如下圖3.1所示&#xff1a; 圖3.1系統功能結構圖 3.2數據庫設計 本系統為小程序類的預約平臺&#xff0c;所以對信息的安全和穩定要求非常高。為了解決本問題&#xff0c;采用前端…

Windows 快速搭建C++開發環境,安裝C++、CMake、QT、Visual Studio、Setup Factory

安裝C 簡介 Windows 版的 GCC 有三個選擇&#xff1a; CygwinMinGWmingw-w64 Cygwin、MinGW 和 mingw-w64 都是在 Windows 操作系統上運行的工具集&#xff0c;用于在 Windows 環境下進行開發和編譯。 Cygwin 是一個在 Windows 上運行的開源項目&#xff0c;旨在提供類Uni…

MKS SERVO42E57E 閉環步進電機_系列10 STM32_脈沖和串口例程

文章目錄 第1部分 產品介紹第2部分 相關資料下載2.1 MKS E系列閉環步進驅動資料2.2 源代碼下載2.3 上位機下載 第3部分 脈沖控制電機運行示例第4部分 讀取參數示例4.1 讀取電機實時位置4.2 讀取電機實時轉速4.3 讀取電機輸入脈沖數4.4 讀取電機位置誤差4.5 讀取電機IO端口狀態 …

【宏基因組】MaAsLin2

教學手冊&#xff1a;學習手冊 MaAsLin2 # BiocManager::install("Maaslin2",force TRUE)library(Maaslin2) # 用的是相對豐度&#xff0c;行名為-ID行樣本,列為細菌 input_data system.file("extdata", "HMP2_taxonomy.tsv", package"…

【消息隊列】認識項目

1. 項目介紹 該項目是去實現一個簡單的消息隊列&#xff0c;包含服務器&#xff0c;客戶端的實現&#xff0c;客戶端通過遠程方法調用與服務器進行交互。采用自定義應用層協議&#xff0c;下層使用 TCP 協議進行數據在網絡中傳輸&#xff0c;核心功能提供了虛擬主機&#xff0…

vue從入門到精通(十一):條件渲染

條件渲染 1.v-if 寫法: (1).v-if“表達式” (2).v-else-if“表達式” (3).v-else“表達式” 適用于:切換頻率較低的場景。 特點:不展示的DOM元素直接被移除。 注意:v-if可以和:v-else-if、v-else一起使用&#xff0c;但要求結構不能被“打斷” 2.v-show 寫法:v-show“…

Python爬蟲基礎文件操作

文件操作 引言 爬蟲爬取的一切內容都是在內存進行的&#xff0c;這樣會有什么問題嗎&#xff1f;如果一旦短電或著發生意外電腦關機了那么你的工作成果將瞬間消失。所以&#xff0c;我們還缺少數據在本地文件系統進行持久化的能力&#xff0c;簡單的來說就是文件讀寫操作。文…

OpenCV中的邊緣檢測

邊緣檢測是圖像處理和計算機視覺中的關鍵技術之一&#xff0c;旨在識別圖像中像素強度發生顯著變化的區域&#xff0c;這些區域通常對應于物體的邊界或輪廓。邊緣檢測在機器視覺中具有重要的需求背景&#xff0c;主要體現在以下幾個方面&#xff1a; 圖像分割&#xff1a;邊緣…

【簡歷優化】性能調優 — 編程性能調優篇

&#x1f60a;你好&#xff0c;我是小航&#xff0c;一個正在變禿、變強的文藝傾年。 &#x1f514;本文講解【簡歷優化】性能調優 — 編程性能調優篇&#xff0c;期待與你一同探索、學習、進步&#xff0c;一起卷起來叭&#xff01; 目錄 一、編程性能調優字符串String 發展優…

深入理解 MySQL 8 C++ 源碼:SELECT MOD(MONTH(NOW()), 2) 的函數執行過程

MySQL 作為最流行的關系型數據庫之一&#xff0c;其內部實現機制一直是開發者探索的熱點。本文將以一條簡單的 SQL 查詢 SELECT MOD(MONTH(NOW()), 2) 為例&#xff0c;深入分析 MySQL 8 源碼中內置函數 MOD、MONTH 和 NOW 的執行過程&#xff0c;揭示其底層實現邏輯。 一、SQL…

RNN中遠距離時間步梯度消失問題及解決辦法

RNN中遠距離時間步梯度消失問題及解決辦法 RNN 遠距離時間步梯度消失問題LSTM如何解決遠距離時間步梯度消失問題 RNN 遠距離時間步梯度消失問題 經典的RNN結構如下圖所示&#xff1a; 假設我們的時間序列只有三段&#xff0c; S 0 S_{0} S0? 為給定值&#xff0c;神經元沒有…

Tomcat理論(Ⅰ)

目錄 服務器流程圖一覽 一、JavaWeb前奏(了解) 1. C/S結構 2. B/S結構 3. 靜態網頁&動態網頁 4.常見的網頁 5.Web服務器 知名服務器&#xff1a; ?編輯 二、Tomcat安裝&#xff08;熟練&#xff09; 1.Tomcat概述 2.Tomcat的作用 3.Tomcat安裝 4.Tomcat測試 3.…

如何使用 DeepSeek R1 構建開源 ChatGPT Operator 替代方案

開源大型語言模型&#xff08;LLMs&#xff09;的興起使得創建 AI 驅動的工具比以往任何時候都更容易&#xff0c;這些工具可以與 OpenAI 的 ChatGPT Operator 等專有解決方案相媲美。在這些開源模型中&#xff0c;DeepSeek R1 以其強大的推理能力、自由的可訪問性和適應性而脫…

使用Docker Desktop部署GitLab

1. 環境準備 確保Windows 10/11系統支持虛擬化技術&#xff08;需在BIOS中開啟Intel VT-x/AMD-V&#xff09;內存建議≥8GB&#xff0c;存儲空間≥100GB 2. 安裝Docker Desktop 訪問Docker官網下載安裝包安裝時勾選"Use WSL 2 instead of Hyper-V"&#xff08;推薦…

【復習】Java集合

集合概念 集合與數組 數組是固定長度&#xff1b;集合是動態長度的數據結構&#xff0c;需要動態增加或刪除元素 數組可以包含基本數據類型和對象&#xff1b;集合只能包含對象 數組可以直接訪問元素&#xff1b;集合需要通過迭代器訪問元素 線程安全的集合&#xff1f; …

vue3 文件類型傳Form Data數據格式給后端

在 Vue 3 中&#xff0c;如果你想將文件&#xff08;例如上傳的 Excel 文件&#xff09;以 FormData 格式發送到后端&#xff0c;可以通過以下步驟實現。這種方式通常用于處理文件上傳&#xff0c;因為它可以將文件和其他數據一起發送到服務器。 首先&#xff0c;創建一個 Vue…

使用 INFINI Console 配置集群監控 Webhook 通知指南

在集群管理中&#xff0c;監控關鍵指標如CPU、內存、磁盤、JVM等是至關重要的。對于Easysearch及ES生態系統&#xff0c;還需要關注集群本身的指標&#xff0c;例如搜索延遲、集群狀態、節點移除等。INFINI Console不僅提供了默認的監控指標&#xff0c;還支持用戶自定義監控項…