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 Capture - Fatal编程技术网

Python 如何将从循环录制的视频保存为不同的文件?

Python 如何将从循环录制的视频保存为不同的文件?,python,opencv,video-capture,Python,Opencv,Video Capture,我正在使用opencv和python在循环中录制视频。我已经设法让它将循环中的所有视频录制并保存到单个输出文件中,但我的目标是将循环中录制的每个视频保存为不同的文件,并将日期和时间作为每个视频的标识符。我不太使用python,我相信有一种简单的方法可以做到这一点,但我就是找不到。非常感谢您的帮助 import cv2 import time as t1 import numpy as np def save_video(outPath,fps,mirror=False): cap =

我正在使用opencv和python在循环中录制视频。我已经设法让它将循环中的所有视频录制并保存到单个输出文件中,但我的目标是将循环中录制的每个视频保存为不同的文件,并将日期和时间作为每个视频的标识符。我不太使用python,我相信有一种简单的方法可以做到这一点,但我就是找不到。非常感谢您的帮助

import cv2
import time as t1
import numpy as np

def save_video(outPath,fps,mirror=False):
    cap = cv2.VideoCapture(0)

    currentFrame = 0
    width = cap.get(cv2.CAP_PROP_FRAME_WIDTH)  # float
    height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)  # float

    fourcc = cv2.VideoWriter_fourcc(*"XVID")
    out = cv2.VideoWriter(outPath, fourcc, 20.0, (int(width), int(height)))

    while (cap.isOpened()):
        ret, frame = cap.read()
        if ret == True:
            if mirror == True:
                frame = cv2.flip(frame, 1)
            out.write(frame)
        cv2.imshow('frame', frame)
    else:
        break
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

    currentFrame +=1


    cap.release()
    out.release()
    cv2.destroyAllWindows()

date_string = t1.strftime("%Y-%m-%d-%H:%M")

count=0
while(True):
    if count < 6:
    print('Recording started: recording video number ' + str(count))
    save_video('/Documents/0222_video_recordings/video' + date_string + '.avi', 
    30.0,mirror=True)
    count += 1

在每个迭代中选择不同的文件名

例如:

save_video('/Documents/0222_video_recordings/video_' + str(count) + '_' + date_string + '.avi', 

我可以帮助你,但我的回答没有多大用处。。。。。。。 您可以使用此代码

import cv2
codec = cv2.VideoWriter_fourcc("*XVID")

# out = cv2.VideoWriter("out.avi", codec, frame speed, frame size)
out = cv2.VideoWriter("out.avi", codec, 10.0, (640,480))
i = 0

cap = cv2.VideoCapture(0)


while True:

    ret, frame = cap.read()

    if ret == True:

        cv2.VideoWriter("out{}.avi".format(i),fourcc, 10.0, (640,480)).write(frame)

        i = i + 1

    cv2.imshow("frame",frame)

    if cv2.waitKey(5) & 0xFF == ord("q"):

        break

cap.release()

out.release()

cv2.destroyAllWindows()

你能说得更具体些吗?你已经知道如何将视频写入文件了,对吧?是的,但是如果我运行这段代码,它从六个视频中捕获的每一个视频都会保存到同一个文件中。我希望每个视频都保存到一个单独的文件,就是这样!非常感谢:请正确格式化您的代码。虽然此代码可能会解决问题,但如何以及为什么解决此问题将真正有助于提高您的文章质量,并可能导致更多的投票。请记住,你是在将来回答读者的问题,而不仅仅是现在提问的人。请在回答中添加解释,并说明适用的限制和假设。