微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

捕获视频帧时的 Python OpenCV 内存问题

如何解决捕获视频帧时的 Python OpenCV 内存问题

我制作了一个 python 程序,它逐帧读取视频文件,将它们存储在内存中,然后用户可以通过迭代每一帧并使用 pyqt5 QImage/Qpixmap 显示它们来逐步浏览视频。由于内存问题,我的应用程序不断崩溃,因为即使是一个相对较小的文件(600 帧,1280x720)也需要至少 1.7GB 的内存。我的视频处理经验很少,我想知道是否有任何技术可以减少内存占用,同时保持相对较好的帧质量。

这是我处理帧的代码

    def load_video(self,media_loaded_func):
        while self.cap.isOpened() and self.should_be_loading:
            ret,frame = self.cap.read()
            if not ret:
                self.finished_loading = True
                media_loaded_func()
                break
            image = self.convert_to_image(frame)
            self.frames.append(image)
            self.load_started = True

    def convert_to_image(self,image_data):
        h,w,ch = image_data.shape
        bytes_per_line = ch * w
        q_image = QImage(image_data.data,h,bytes_per_line,QImage.Format_RGB888).rgbSwapped()
        return q_image

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。