【发布时间】:2019-11-28 05:38:32
【问题描述】:
我目前正在为计算机视觉问题制作数据集。我想在之前的数据中添加一些数据。所以我想从 2 个不同的视频中获得大约 3000 帧。
我使用 openCV 是因为我知道捕获功能,但我不确定这一点,因为我的记忆力正在爆炸式增长。我对之前已经处理过的数据集使用了 pickle 文件,并且我的记忆中拥有这么多信息没有问题。也许我的代码很糟糕而没有注意到它......
这是我从视频中获取大约 3000 帧的代码:
import cv2
video_name1 = "videosDataset/AMAZExNHORMS2019_Lo-res.mp4"
video_name2 = "videosDataset/CAMILLATHULINS2019_Lo-res.mp4"
def getAllFrames(videoName):
video_name = videoName
property_id =int(cv2.CAP_PROP_FRAME_COUNT)
cap = cv2.VideoCapture(video_name) #video_name is the video being called
frames = []
length = int(cv2.VideoCapture.get(cap, property_id))
print(length)
minL = int(length/2)
maxL = int(2*length/3)
print(minL,maxL)
for i in range(minL,maxL):
cap.set(1,i); # Where frame_no is the frame you want
ret, frame = cap.read() # Read the frame
frames.append(frame)
print(str(round((i-minL)/(maxL-minL)*100, 2))+'%')
return frames
frames1 = getAllFrames(video_name1)
我想知道是否有更好的方法来做到这一点。谢谢
【问题讨论】: