首页 > 解决方案 > QML如何将效果渲染到图像

问题描述

QML 中有没有办法将效果(例如 Fastblur)的输出渲染到外部图像?我想将它与视频输出结合使用,用于实时 snapchat 过滤器之类的东西。

在我的应用程序中,相机提供了视频输出,该视频输出提供了效果输出,但似乎没有用于将效果渲染到图像的 API。imageCapture 相机组件仅在应用效果之前直接从相机捕获帧。效果组件中没有将其渲染到外部图像的方法。

有没有办法做到这一点?

标签: qtimage-processingcameraqmlqt5

解决方案


有一种grabToImage()方法可用于每个 QML 视觉项目,它也适用QtGraphicalEffects

这不是很有效,但在大多数情况下就足够了。请注意,它会保存单个图像,它不能用于视频,虽然 Qt 本身可以内部编码视频,但它并没有真正提供任何关于单个帧的视频编码作为公共 API 的任何东西,所以如果你想将效果输出保存为视频,您将不得不深入挖掘场景图以实现更有效的帧捕获方法,并利用一些 3rd 方库将帧编码为视频。


推荐阅读