【发布时间】:2022-05-03 15:44:51
【问题描述】:
我想编写一个程序,使用 python (cv2) 中的 openCV 监视和跟踪 2 个不同视频中的对象。
我想将两个视频合并为一个视频,然后在该视频上运行一个程序来跟踪对象。
有人可以展示并解释合并它们的说明吗?
我的代码在这里不起作用。它在视频 1 的第一帧之后启动视频 2
import cv2
capture = cv2.VideoCapture('p1a_tetris_1.mp4') #tell open cv to use the following video file as input
while capture.isOpened():
ret, frame = capture.read() #capture each frame from the video .
#ret is a boolean to indicate if the
if ret == True :
grayFrame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # apply gray frame to current frame
cv2.imshow('video Part 1', grayFrame) # shows video in grascale
else :
capture = cv2.VideoCapture('p1a_tetris_2.mp4')
while capture.isOpened():
try:
ret, frame = capture.read()
print(ret)
if ret == True :
grayFrame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # apply gray frame to current frame
cv2.imshow('Video Part 2', grayFrame) # shows video in grascale
if cv2.waitKey(1) == 27:
break
else :
break
except :
print("error occured")
capture.release() cv2.destroyAllWindows()
【问题讨论】:
-
输入的一些例子?到目前为止,您尝试了什么?
-
您想在第一个视频之后合并第二个视频还是同时合并两个视频 - 在屏幕的左侧和右侧?对于第一个版本,您可以使用
ffmpeg而不是opencv- 可能您应该像ffmpeg -i one.mp4 -i two.mp4 -o output.mp4那样在一行中执行此操作(甚至有ffmpeg-python可以从Python` 执行此操作)。为了合并显示器左右两侧的帧,您必须使用循环读取单个帧,创建新帧并将其保存在新文件中 - 类似于您在任何 opencv 教程中看到的单个视频
标签: python numpy opencv video-processing