我需要帮助。我希望每当我的程序到达视频结尾时,我希望它自动关闭而不会永远循环。
我尝试了几种方法(使用 ret),但它们不起作用。除了我可能将它们写在错误的范围内之外,我不知道为什么它总是出错。
我还需要记录从打开视频到关闭视频所经过的时间差(使用 time.time()
)。但是,每当我强制关闭 OpenCV 窗口时,我在下面编写的这段代码并没有打印出时间差。
这是我的代码的粗略结构(不是完整代码,我只展示重要的):
import stuff
cap = cv2.VideoCapture('file.mp4')
def main():
start = time.time()
out = cv2.VideoWriter('newvid.mp4')
while True:
#Stuff I do on the video in each frame
video = cap.copy()
cv2.imshow('video', video)
out.write(video)
if cv2.waitKey(33) == 27:
break
end = time.time()
print(end - start)
cv2.destroyAllWindows()
if __name__ = '__main__':
main()
谁能帮我告诉我解决办法吗?
答案 0 :(得分:0)
#import stuff
import cv2
import time
cap = cv2.VideoCapture('file1.mp4')
def main():
start = time.time()
fourcc = cv2.VideoWriter_fourcc(*'MP4V')
fps = cap.get(cv2.CAP_PROP_FPS)
size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
out = cv2.VideoWriter('newvid.mp4', fourcc, fps, size)
while True:
# Stuff I do on the video in each frame
ret, video = cap.read()
if ret is False:
break
cv2.imshow('video', video)
out.write(video)
if cv2.waitKey(33) == 27:
break
end = time.time()
print(end - start)
cap.release()
out.release()
cv2.destroyAllWindows()
if __name__ == '__main__':
main()