在python中从视频导入大量图像的有效方法

奥托

我目前正在为计算机视觉问题制作数据集。我想向以前的数据中添加一些数据。所以我想从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)

我想知道是否有更好的方法可以做到这一点。谢谢

雅库布·库伯勒(Jakub Koubele)

这里的问题是压缩-读取时,每个帧都存储为numpy数组,这非常昂贵。例如,一个1280 x 720像素的RGB帧以jpg格式约为200 kB,以png格式约为1.2 MB,以numpy uint8数组存储时为2.7 MB,而以numpy float64数组存储时为22 MB。最简单的解决方案是将每个帧作为jpg图像存储到磁盘(例如,通过cv2.imwrite),而不是创建包含所有帧的数组。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

检查数据库中存在的大量字符串的有效方法

检测图像中白色背景的有效方法

有效计算图像python的方差

为大量图像提取pool_3的有效方法?

在MySQL中处理大量数据的有效方法

在Python中对特定值的图像的每个像素进行计数的有效方法?

在Python中导入图像的有效方法

在Python NumPy中拉伸图像的最有效方法

在Django / Python中从网站抓取图像的有效方法

解析大量文件的有效方法

从客户端向服务器发送大量图像的有效方法

在pygame中加载大量图像的有效方法?

有没有一种方法可以在Python中更有效(更快)地将大量的Yaml文件读入pandas dataframe中

在PictureBox中更改图像的更有效方法

移动驻留在单个目录中的大量文件的最有效方法是什么?

在Grails中实现Excel导入的有效方法

确定postgres中是否存在大量行的有效方法

python中的tiff图像的有效格式是什么

处理ArrayList中图像的最有效方法

在文件中存储大量由定界符分隔的整数键值对的最有效方法

对图像执行积分的有效方法

在 Rails 中向大量用户发送邮件的最有效方法是什么?

有效的解决方法而不是使用大量的 if 语句?

在 ReyclerView 中加载大量相同图像的有效方法

在python中闪烁图像的有效方法

从大量表中检索数据的最有效方法 (20-30)

有效地从磁盘加载大量图像python

在 Pandas 数据框中创建大量新的移位加权平均列的最有效方法

在 Python 中迭代大量数据的有效方法