gpt4 book ai didi

opencv - 逐帧组合两个不同长度的视频,使它们出现在一帧中,有点像视频平铺

转载 作者:行者123 更新时间:2023-12-04 23:35:00 25 4
gpt4 key购买 nike

我有两个长度不同但分辨率相同(640,480)的 h264 视频。我想逐帧组合它们,使得时间 T 的 video1 的帧 f1 和时间 T 的 video2 的帧 f2 出现在一帧侧面。所以最后你有一个通过组合来自 video1 和 video2 的帧序列形成的视频。

我怎样才能使用这些解决方案中的任何一个来做到这一点:

  • 编程
  • 软件
  • ffmpeg
  • 最佳答案

    我能够使用以下方法解决问题:

    import cv2
    import cv
    import numpy as np

    capture1 = cv2.VideoCapture("video1.h264")
    capture2 = cv2.VideoCapture("video2.h264")

    while True:
    ret1, frame1 = capture1.read()
    ret2, frame2 = capture2.read()

    h1, w1, d1 = capture1.get(cv.CV_CAP_PROP_FRAME_HEIGHT), capture1.get(cv.CV_CAP_PROP_FRAME_WIDTH), 3
    h2, w2, d2 = capture1.get(cv.CV_CAP_PROP_FRAME_HEIGHT), capture1.get(cv.CV_CAP_PROP_FRAME_WIDTH), 3

    vis = np.zeros((max(h1,h2), w1+w2, 3), np.uint8)
    if frame1 is None:
    frame1 = np.zeros((h1,w1,d1), np.uint8)
    if frame2 is None:
    frame2 = np.zeros((h2,w2,d2), np.uint8)

    vis[:h1, :w1, :d1] = frame1
    vis[:h2, w1:w1+w2, :d2] = frame2

    cv2.imshow('Merged Frame', vis)

    if cv2.waitKey(1) & 0xFF == ord('q'):
    break

    capture1.release()
    capture2.release()
    cv2.destroyAllWindows()

    上面的代码也解决了视频长度不同的问题。例如:假设video1较长video2,那么video2边会变暗直到video1结束。

    但是还有一个问题是video2变暗后,video1的处理速度变慢了。另外,一旦两个视频都结束了,我应该如何打破循环?我试图使用 ret1, ret2 flags提到但他们显然没有工作

    关于opencv - 逐帧组合两个不同长度的视频,使它们出现在一帧中,有点像视频平铺,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32995766/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com