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视频画面拼接内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python 制作简单的音乐播放器

    python 制作简单的音乐播放器

    这篇文章主要介绍了python 制作简单的音乐播放器,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-11-11
  • 详解python方法之绑定方法与非绑定方法

    详解python方法之绑定方法与非绑定方法

    这篇文章主要介绍了python方法之绑定方法与非绑定方法的相关资料,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-08-08
  • Python OpenCV实现姿态识别的详细代码

    Python OpenCV实现姿态识别的详细代码

    这篇文章主要介绍了Python OpenCV实现姿态识别的方法,本文通过截图实例代码相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • TensorFlow2基本操作之合并分割与统计

    TensorFlow2基本操作之合并分割与统计

    这篇文章主要介绍了TensorFlow2基本操作之合并分割与统计,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • Python批量处理csv并保存过程解析

    Python批量处理csv并保存过程解析

    这篇文章主要介绍了Python批量处理csv并保存过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • python 利用 PrettyTable 美化表格

    python 利用 PrettyTable 美化表格

    这篇文章主要介绍了python 利用 PrettyTable 美化表格,首先按行设置数据展开相关内容,需要的小伙伴可以参考一下
    2022-04-04
  • Python实现图片转字符画的示例

    Python实现图片转字符画的示例

    本篇文章主要介绍了Python实现图片转字符画的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • OpenCV+Python3.5 简易手势识别的实现

    OpenCV+Python3.5 简易手势识别的实现

    这篇文章主要介绍了OpenCV+Python3.5 简易手势识别的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • python getpass实现密文实例详解

    python getpass实现密文实例详解

    这篇文章主要介绍了python getpass实现密文实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • 解决jupyter notebook启动后没有token的坑

    解决jupyter notebook启动后没有token的坑

    这篇文章主要介绍了解决jupyter notebook启动后没有token的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04

最新评论