我试图创建一个模型来处理帧预测,所以我试图通过阅读视频文件来存储帧来创建一个数据集,以便我可以使用它来训练模型与监督学习。我计划存储三帧的组,但我很快就用完了第一个视频的内存,当这样做时。我只是想知道这是否可能,也许有'有一些不同的方法来存储帧而不耗尽内存,或者我应该在训练模型时一次只阅读部分数据,或者有其他解决方案。
我尝试存储帧的位置的代码如下所示:
def get_data(path):
data = []
video = []
for v in os.listdir(path):
print(v)
video = cv2.VideoCapture(path+"/"+v)
print(video.get(cv2.CAP_PROP_FPS))
ret, frame_one = video.read()
ret, frame_two = video.read()
max = int(video.get(cv2.CAP_PROP_FRAME_COUNT))
frame_num = 2
while video.isOpened():
ret, frame_three = video.read()
if ret == True:
data.append((frame_one, frame_two, frame_three))
frame_one = frame_two
frame_two = frame_three
frame_num += 1
print(frame_num,'/',max)
if cv2.waitKey(1) & 0xFF == ord('q'): # on press of q break
break
else:
break
return data
1条答案
按热度按时间voase2hg1#
几分钟的视频可以有数百帧。
在本地存储这些帧是不明智的。你会耗尽内存。正如你所承认的那样
你可以使用cloudinary或s3 bucket将框架图片转换为url,然后上传到数据库,同时从内存中删除框架。
坚韧的右派