从文件夹中的所有视频中抓取视频帧,用 openCV 处理,保存到自己的文件夹?
Grab video frames from all videos in folder, process with openCV, save to own folder?
我有这样的代码。我知道这不正确,但我是新手,不确定如何解决。我如何才能让 cv2 在文件夹中的每个视频上运行,每 3 秒拍摄一帧,并将帧图像保存在 /data/ --- ex. /data/rise_of_skywalker
?
内的新文件夹中
谢谢
import cv2
import numpy as np
import os
def frame_capture(file):
cap = cv2.VideoCapture(file)
try:
if not os.path.exists('data'):
os.makedirs('data')
except OSError:
print('Error: Creating directory of data')
currentFrame = 0
while(True):
# Capture frame by frame
ret, frame = cap.read()
'''
(((how do I change this block here to get it for every 3 seconds?)))
'''
if currentFrame == 5:
name = './data/frame' + str(currentFrame) + '.jpg'
print ('Creating...' + name)
cv2.imwrite(name, frame)
# To stop duplicate images
currentFrame += 1
cap.release()
cv2.destroyAllWindows()
print ("Done!")
for file in os.listdir("/users/x/Desktop/y/videos"):
if file.endswith(".mp4"):
path=os.path.join("/users/x/Desktop/y/videos", file))
frame_capture(path)
如果我没理解错的话,你要做的是将行 if currentFrame == 5:
更改为 if currentFrame % (3 * fps) == 0:
在该行之前,在循环外,添加 fps = cap.get(cv2.CAP_PROP_FPS)
我有这样的代码。我知道这不正确,但我是新手,不确定如何解决。我如何才能让 cv2 在文件夹中的每个视频上运行,每 3 秒拍摄一帧,并将帧图像保存在 /data/ --- ex. /data/rise_of_skywalker
?
谢谢
import cv2
import numpy as np
import os
def frame_capture(file):
cap = cv2.VideoCapture(file)
try:
if not os.path.exists('data'):
os.makedirs('data')
except OSError:
print('Error: Creating directory of data')
currentFrame = 0
while(True):
# Capture frame by frame
ret, frame = cap.read()
'''
(((how do I change this block here to get it for every 3 seconds?)))
'''
if currentFrame == 5:
name = './data/frame' + str(currentFrame) + '.jpg'
print ('Creating...' + name)
cv2.imwrite(name, frame)
# To stop duplicate images
currentFrame += 1
cap.release()
cv2.destroyAllWindows()
print ("Done!")
for file in os.listdir("/users/x/Desktop/y/videos"):
if file.endswith(".mp4"):
path=os.path.join("/users/x/Desktop/y/videos", file))
frame_capture(path)
如果我没理解错的话,你要做的是将行 if currentFrame == 5:
更改为 if currentFrame % (3 * fps) == 0:
在该行之前,在循环外,添加 fps = cap.get(cv2.CAP_PROP_FPS)