gpt4 book ai didi

python - OpenCV 会覆盖我之前保存的视频。 python 3

转载 作者:行者123 更新时间:2023-12-01 02:06:47 29 4
gpt4 key购买 nike

import cv2, time
import numpy as np

我想让这段代码不覆盖以前保存的视频

video = cv2.VideoCapture(0)

fourcc = cv2.VideoWriter_fourcc(*"XVID")

这行代码使视频始终保存为output.avi,而我想让它保存当天的日期

out = cv2.VideoWriter('output.avi', fourcc, 20.0, (640,480))

a = 0

while True:
a = a + 1

check, frame = video.read()
print(check)
print(frame)

out.write(frame)

cv2.imshow("Capturing", frame)

我觉得好像我在这里的某个地方使用了 if 语句,那么它可能会使视频不会覆盖以前的视频,但是我已经尝试过,但它不起作用

    key = cv2.waitKey(1)    

if key == ord('q') :
break

print(a)

video.release()
out.release()
cv2.destroyAllWindows()

如果可能的话,我还想让此代码将视频保存为当前日期

最佳答案

您只需格式化文件名并将日期放入其中即可:

import datetime

filename = 'output_{0}.avi'.format(datetime.datetime.now().strftime("%Y-%m-%d"))
print (filename)

输出:

output_2018-02-25.avi

然后将其提供给视频创建方法:

out = cv2.VideoWriter(filename, fourcc, 20.0, (640,480))

在此处查看 datetime.strftime 的格式提示

<小时/>

可能最好将其放入一个为您提供正确名称的函数中,同时检查该文件是否已存在并最终添加一个流水号:

import datetime 
import os

def getAviNameWithDate(nameIn="output.avi"):
"""Needs a file ending on .avi, inserts _<date> before .avi.

If file exists, it appends a additional _number after the <date>
ensuring filename uniqueness at this time."""
if not nameIn.endswith(".avi"):
raise ValueError("filename must end on .avi")

filename = nameIn.replace(".avi","_{0}.avi")
.format(datetime.datetime.now().strftime("%Y-%m-%d"))

if os.path.isfile(filename): # if already exists
fn2 = filename[0:-4]+'_{0}.avi' # modify pattern to include a number
count = 1
while os.path.isfile(fn2.format(count)): # increase number until file not exists
count += 1
return fn2.format(count) # return file with number in it

else: # filename ok, return it
return filename

# test it
for _ in range(5):
with open(getAviNameWithDate("a.avi"),"w") as w:
w.write("1")

执行片段以查看它是如何创建的:

a_2018-02-25.avi
a_2018-02-25_1.avi
a_2018-02-25_2.avi
a_2018-02-25_3.avi
a_2018-02-25_4.avi

关于python - OpenCV 会覆盖我之前保存的视频。 python 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48978862/

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