Qt Qml:移动轴对齐边界框的动态数量

时间:2017-03-18 18:07:54

标签: c++ qt qml

我正在编写一个能够显示多个视频流的视频显示软件。为此,我有一个GridView,它将QML中的VideoOutputs连接到c ++中的QAbstractListModel派生类,该类提供具有QAbstractVideoSurface Q_PROPERTY的对象实例。到目前为止,它的工作非常精彩。

我正在显示的视频帧带有元数据,但是包含轴对齐边界框的数据。我事先不知道有多少箱子,这个数字甚至可以逐帧改变,它们的位置和大小也没有设定。

最终,它应该看起来像这样: some AABBs in a video frame

由于我需要能够一次显示几个视频流,最好是30+ fps,我需要一种快速绘制这些框的方法。在QVideoFrame所基于的QImage上使用QPainter相当慢,所以我在考虑其他一些方法:

使用QML对象在Repeater中使用c ++提供的模型中的Rectangle(希望简单地提供QVariantList :: fromVector()):可以工作,但是我需要很多模型,而这些模型反过来我需要提供给带有模型的QML,我可能需要在框中更改的每一帧调用begin / endResetModel以导致QML更新 - 这也非常慢。

使用着色器绘制框:这是一种相当困难的方法。我对着色器并不陌生,但在Qt / Qml中,我不知道如何为着色器提供必要的信息。

直接使用OpenGL绘制框:同样,我不知道如何做到这一点,但我想如果我用Google搜索,我可以解决它。

我的问题:这些方法中哪一个(如果有的话)最好?如果没有这些,我可以使用哪种方法?

非常感谢你花时间阅读我这个相当长的问题!

0 个答案:

没有答案
相关问题