Python实现多视频画面拼接

 更新时间:2024年10月29日 10:02:31   作者:AIHUBEI  
这篇文章主要为大家详细介绍了如何利用Python实现多视频画面拼接功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

利用Python实现多视频画面拼接

第一行为原始视频,第二行为分割处理后的视频,拼接实现效果如下:

完整代码

import cv2
import numpy as np
import os

# 设置原始视频文件夹路径.
input_folder = "C:/Users/Administrator/Desktop/output"  # 替换为你的输入文件夹路径.
output_file = 'C:/Users/Administrator/Desktop/combined_video.mp4'   # 输出文件名.

# 指定视频的顺序.
video_indices = [1, 2, 3]  # 假设你的视频编号从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'))

# 确保视频数量匹配.
if len(original_videos) != len(segmentation_videos):
    print("原始视频和分割视频数量不匹配!")
    exit()

# 初始化VideoCapture对象.
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))

# 设置输出视频的参数.
output_width = frame_width * 3
output_height = frame_height * 2
fps = caps[0].get(cv2.CAP_PROP_FPS)
fourcc = cv2.VideoWriter_fourcc(*'mp4v')

# 创建 VideoWriter 对象.
out = cv2.VideoWriter(output_file, fourcc, fps, (output_width, output_height))

while True:
    frames = []

    # 读取所有视频的当前帧.
    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)

    # 检查是否所有视频都已经结束.
    if all(frame is None for frame in frames):
        break

    # 创建一个大画面,只合并有效帧.
    valid_frames = [frame for frame in frames if frame is not None]

    # 检查是否有足够的有效帧进行合并.
    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))

        # 写入合成帧到输出文件.
        out.write(combined_frame)
    else:
        print("当前帧无效,无法进行合并。")

# 释放资源.
for cap in caps:
    cap.release()
out.release()

print('视频合并完成!输出文件:', output_file)

# 实现效果.
from IPython.display import Video

Video(filename='./输出效果/combined_video.mp4', width=450, height=330)

处理效果如下

combined_video

到此这篇关于Python实现多视频画面拼接的文章就介绍到这了,更多相关Python视频画面拼接内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 深入了解Django View(视图系统)

    深入了解Django View(视图系统)

    这篇文章主要介绍了简单了解Django View(视图系统),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • Python 找到列表中满足某些条件的元素方法

    Python 找到列表中满足某些条件的元素方法

    今天小编就为大家分享一篇Python 找到列表中满足某些条件的元素方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • python基于itchat模块实现微信防撤回

    python基于itchat模块实现微信防撤回

    这篇文章主要为大家详细介绍了python实现微信防撤回,基于itchat模块,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • Win7下搭建python开发环境图文教程(安装Python、pip、解释器)

    Win7下搭建python开发环境图文教程(安装Python、pip、解释器)

    这篇文章主要为大家分享了Win7下搭建python开发环境图文教程,本文主要介绍了安装Python、pip、解释器的详细步骤,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • python调用fortran模块

    python调用fortran模块

    本文给大家介绍的是在Python中调用fortran代码,主要是用到了f2py这个程序,十分的实用,有需要的小伙伴可以参考下
    2016-04-04
  • Python中根据时间自动创建文件夹的代码实现

    Python中根据时间自动创建文件夹的代码实现

    这篇文章主要介绍了Python中根据时间自动创建文件夹的代码实现,这样的话给工作带来极大的便利,方便桌面文件按时间存放,具体实例代码跟随小编一起看看吧
    2021-10-10
  • 如何利用Anaconda配置简单的Python环境

    如何利用Anaconda配置简单的Python环境

    这篇文章主要为大家详细介绍了如何利用Anaconda配置简单的Python环境,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • Python中常用utils库详细介绍

    Python中常用utils库详细介绍

    这篇文章主要给大家介绍了关于Python中常用utils库的相关资料,Utils是一个Python库,它提供了一系列的工具,可以帮助你更轻松地管理你的Python环境,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-03-03
  • 详解Python变量与注释高级用法

    详解Python变量与注释高级用法

    变量与注释是表达作者思想的基础,他们对代码质量的贡献母庸质疑,这篇文章主要介绍了Python变量与注释高级用法,需要的朋友可以参考下
    2022-08-08
  • Python之如何调整图片的文件大小

    Python之如何调整图片的文件大小

    这篇文章主要介绍了Python之如何调整图片的文件大小问题,具有很好的参考价值,希望对大家有所帮助。
    2023-03-03

最新评论