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

为 60 个 QImages 工作后“qimage 内存不足,返回空图像”

如何解决为 60 个 QImages 工作后“qimage 内存不足,返回空图像”

我阅读了很多关于这个主题的帖子,但似乎没有帖子对我有帮助。 我正在运行 32 位 Qt 应用程序。

我想知道为什么我有时会收到此错误

qimage 内存不足返回空图像

我想从 mp4 文件中读取视频帧并将它们转换为 QImage。之后,我想将 QImage 转换为 Qpixmap 以将其显示在 QGraphicsView (setpixmap) 上。

这是相关的代码

我用来将 cv::Mat 转换为 Qpixmap函数

Qpixmap QtMainApp::MatToQpixmap(cv::Mat& cvMat)
{
    QImage qimg((cvMat).data,(cvMat).cols,(cvMat).rows,(cvMat).step,QImage::Format_RGB888);

    return Qpixmap::fromImage(qimg.rgbSwapped());
}

我在哪里调用函数并从 mp4 文件中读取视频帧:

std::vector <Qpixmap> vecQVideobilder{};
 
cv::VideoCapture videofile;
videofile.open("video.mp4");

while(true)
{

   bool bErfolg = videofile.read(MatTemp);
                
   if (!bErfolg)
       break;

              
   vecQVideobilder.push_back(MatToQpixmap(MatTemp));
                

}

奇怪的是,它适用于随机数量的帧。我可以毫无问题地显示这些框架。

但在某些时候(在 60 到 100 帧之后(它有所不同))我收到错误消息并且我只得到空白图像。

我已经读过,对于 32 位应用程序 QImage 来说,框架的大小/解决方案可能太大了。但后来我想知道为什么它适用于前 60 或 100 帧。

有什么我可以做的吗?提前致谢。

亲切的问候 提姆

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