【发布时间】:2022-01-01 08:38:24
【问题描述】:
我有一个视频流,如 Qt Video Overview 中所述,使用 MyVideoProducer 机制。分析了源图像,我有一个连接组件列表(x、y、宽度、高度),我想要在视频上叠加矩形。
我可以通过向 QML 发送一个矩形坐标列表并让它放置矩形来做到这一点,还是我需要创建自己的叠加图像?
我查看了 QtQuick 粒子系统,但它似乎不适合。其他问题有由 Qt/Qml 管理的矩形布局,但我需要根据视觉管道在 C++ 中确定并发送到 QML 前端的坐标来放置矩形。它们将过时/与视频帧相关。
有an example,但叠加层与视频无关。我想我需要一个与onNewVideoContentReceived() 同步的覆盖。 QML 将无法确定如何轻松地使任何矩形列表与视频保持同步。
【问题讨论】:
-
最好考虑 Qt3D。 doc.qt.io/qt-5/qt3drender-geometry.html 但是这个主题不适合这里的几行文字来描述和适用于您的问题。
-
听起来你可以在 C++ 端生成模型,然后在 QML 端使用中继器或其他东西来生成矩形。
-
@artlessnoise 无论如何,经过一些预处理后它最终会出现在 GPU 中。场景的确切变换是什么以及您的形状是否有任何高度只是一个细节。除此之外,您可以考虑doc.qt.io/qt-5/qquickwindow.html#afterRendering 和类似的信号用于与图形输出同步。我确实使用 after 和 beforeRendering 插槽渲染我自己的编程绘图,以便在正确的时间将其插入那里。
标签: qt computer-vision qml qt5