问题描述
我阅读了很多关于这个主题的帖子,但似乎没有帖子对我有帮助。 我正在运行 32 位 Qt 应用程序。
qimage 内存不足返回空图像
我想从 mp4 文件中读取视频帧并将它们转换为 QImage。之后,我想将 QImage 转换为 Qpixmap 以将其显示在 QGraphicsView (setpixmap) 上。
这是相关的代码:
Qpixmap QtMainApp::MatToQpixmap(cv::Mat& cvMat)
{
QImage qimg((cvMat).data,(cvMat).cols,(cvMat).rows,(cvMat).step,QImage::Format_RGB888);
return Qpixmap::fromImage(qimg.rgbSwapped());
}
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 (将#修改为@)