gpt4 book ai didi

python-3.x - 使用 opencv 编写视频但输出文件无法播放

转载 作者:太空宇宙 更新时间:2023-11-03 22:39:48 28 4
gpt4 key购买 nike

我想并排使用两个视频编写一个视频文件,但最后输出文件无法在任何视频播放器中播放。这是我的代码:

from __future__ import print_function
import numpy as np
import argparse
import cv2
import tkinter as tk
from tkinter import filedialog
import os
import os.path

ap = argparse.ArgumentParser()
ap.add_argument("-o", "--output", type=str, default="sample.avi",
help="path to output video file")
ap.add_argument("-f", "--fps", type=int, default=100.0,
help="FPS of output video")
ap.add_argument("-c", "--codec", type=str, default="MJPG",
help="codec of output video")
args = vars(ap.parse_args())

root = tk.Tk()
root.withdraw()

source_video = filedialog.askopenfilename(title="Select file")
sign = filedialog.askopenfilename(title="Select file")
print("[INFO] Capturing video...")
cap1 = cv2.VideoCapture(source_video)
cap2 = cv2.VideoCapture(sign)

fourcc = cv2.VideoWriter_fourcc(*args["codec"])
writer = None
(h, w) = (None, None)
zeros = None
i = 0
try:
while cap1.isOpened():
ret, frame1 = cap1.read()
if ret:
frame1 = cv2.resize(frame1, (0, 0), fx=0.5, fy=0.5)
(h, w) = frame1.shape[:2]

ret, frame2 = cap2.read()
if ret:
frame2 = cv2.resize(frame2, (w, h))

else:
break

if writer is None:
writer = cv2.VideoWriter(args["output"], fourcc, args["fps"],
(h, w*2), True)
zeros = np.zeros((h, w*2), dtype="uint8")
output = np.zeros((h, w*2, 3), dtype="uint8")

if frame2 is None:
output[0:h, 0:w] = frame1
writer.write(output)
else:
output[0:h, 0:w] = frame1
output[0:h, w:w * 2] = frame2
writer.write(output)

cv2.imshow('output', output)
if cv2.waitKey(25) & 0xFF == ord('q'):
break

writer.release()
cv2.destroyAllWindows()


except Exception as e:
print(str(e))

我没有收到任何错误,一切进展顺利,但当我尝试从目录播放输出视频文件时,它无法播放。我还检查了大约 16KB 的文件大小。我不知道问题出在哪里。请帮我。我在用着:Windows 10 64 位Python3.7Pycharm 作为 IDE

最佳答案

VideoWriterframeSize 参数是(宽度,高度),这在文档中有些隐藏(例如,here)。所以在你的代码中,它应该是

writer = cv2.VideoWriter(args["output"], fourcc, args["fps"], (w*2, h), True)

此修复后,您的代码为我制作了工作视频。

我注意到您的代码从输入视频中“学习”了帧大小而不是帧速率,但我认为这是故意的。

关于python-3.x - 使用 opencv 编写视频但输出文件无法播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55110906/

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