Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 多摄像机视频拼接_Python_Opencv_Video_Video Capture - Fatal编程技术网

Python 多摄像机视频拼接

Python 多摄像机视频拼接,python,opencv,video,video-capture,Python,Opencv,Video,Video Capture,我想从多个摄像头拼接视频。缝合时,我想从一个摄像头切换到另一个摄像头。是否可以在OpenCv中执行此操作 例如,我有3个视频路径(具有相同持续时间的视频),希望通过在视频之间切换来创建单个视频摘要。首先,我创建了3个视频捕获对象,如下所示 cap0=cv2.VideoCapture(path1) cap1=cv2.VideoCapture(path2) cap2=cv2.VideoCapture(path3) 同样,我也创造了 ret,frame0=cap0.read() ret,frame1

我想从多个摄像头拼接视频。缝合时,我想从一个摄像头切换到另一个摄像头。是否可以在OpenCv中执行此操作

例如,我有3个视频路径(具有相同持续时间的视频),希望通过在视频之间切换来创建单个视频摘要。首先,我创建了3个视频捕获对象,如下所示

cap0=cv2.VideoCapture(path1)
cap1=cv2.VideoCapture(path2)
cap2=cv2.VideoCapture(path3)
同样,我也创造了

ret,frame0=cap0.read()
ret,frame1=cap1.read()
ret,frame3=cap2.read()
现在,首先,我将从中获取由cap0读取并传递到VideoWriter对象的帧。过了一段时间,我想插入从路径1切换时从路径2读取的帧。比如,如果我从路径1写到3秒,我想从4秒到6秒插入路径2的帧

现在,如果我再次切换回path1,那么我想通过将path1的帧从4秒跳过到6秒来插入7秒的帧


有什么方法可以这样做吗?例如跳过帧或任何其他选择

是的,您可以先使用

int fps = (int) cvGetCaptureProperty(capture1, CV_CAP_PROP_FPS);
现在计算要捕获的帧数

numberOfFrames = fps*time

这个时间是您想要捕获一个视频的时间。因此,计算每个视频流的开始帧和结束帧。然后将这些帧捕获为Mat中的图像,并使用VideoWriter写入

是的,您可以先使用

int fps = (int) cvGetCaptureProperty(capture1, CV_CAP_PROP_FPS);
现在计算要捕获的帧数

numberOfFrames = fps*time

这个时间是您想要捕获一个视频的时间。因此,计算每个视频流的开始帧和结束帧。然后将这些帧捕获为Mat中的图像,并使用VideoWriter编写

,因为您是在缝合时编写的,所以我假设您想制作一种gui,并查看在不同时间切换的结果,否则Garvita Tiwari的回答似乎是正确的

一种方法是使用变量(比如)vid_no的createTrackbar,其值范围为0到num_Cams-1。现在,您可以根据变量vid_no的值简单地使用if-else从所需视频捕获帧。 在OpenCv中使用轨迹栏的格式

createTrackbar("select_Video", "control", &vid_no, num_Cams - 1);

由于您在缝合时编写,所以我假设您希望制作一种gui,并查看在不同时间切换的结果,否则Garvita Tiwari的答案似乎是正确的

一种方法是使用变量(比如)vid_no的createTrackbar,其值范围为0到num_Cams-1。现在,您可以根据变量vid_no的值简单地使用if-else从所需视频捕获帧。 在OpenCv中使用轨迹栏的格式

createTrackbar("select_Video", "control", &vid_no, num_Cams - 1);

为了将它们转换为图像,有必要计算索引或位置,直到我应该转换到什么时候,如果我返回,是否有方法跟踪跳过的帧,如上述问题中提到的场景是的,如果你想处理图像,有必要计算位置。是的,您可以跟踪跳过的帧。最简单的方法是将图像存储在矢量中,然后在需要时使用它们。为了将它们转换为图像,有必要计算索引或位置,直到我应该转换到什么时候,如果我返回,是否有一种方法可以跟踪跳过的帧,如上述问题中提到的场景是的,如果你想处理图像,有必要计算位置。是的,您可以跟踪跳过的帧。最简单的方法是将图像存储在矢量中,然后在需要时使用它们。