qt - QML如何将效果渲染到图像
问题描述
QML 中有没有办法将效果(例如 Fastblur)的输出渲染到外部图像?我想将它与视频输出结合使用,用于实时 snapchat 过滤器之类的东西。
在我的应用程序中,相机提供了视频输出,该视频输出提供了效果输出,但似乎没有用于将效果渲染到图像的 API。imageCapture 相机组件仅在应用效果之前直接从相机捕获帧。效果组件中没有将其渲染到外部图像的方法。
有没有办法做到这一点?
解决方案
有一种grabToImage()
方法可用于每个 QML 视觉项目,它也适用QtGraphicalEffects
。
这不是很有效,但在大多数情况下就足够了。请注意,它会保存单个图像,它不能用于视频,虽然 Qt 本身可以内部编码视频,但它并没有真正提供任何关于单个帧的视频编码作为公共 API 的任何东西,所以如果你想将效果输出保存为视频,您将不得不深入挖掘场景图以实现更有效的帧捕获方法,并利用一些 3rd 方库将帧编码为视频。
推荐阅读
- vert.x - Vert.x 与 openhft 库的线程关联
- kubernetes - 如何在 Kubernetes 中获取 pod 的文件/它们的位置?
- docker - Nginx + Otrs 重定向子文件夹(docker)
- php - 我正在尝试从经过身份验证的用户配置文件的用户表中传递用户的 ID
- performance - Vue 3:如何实现修改 DOM 中所有输入字段的功能?
- javascript - Mulitdatepicker - 从数组中设置的日期中删除 .ui-state-highlight
- xml - 来自数组响应的 Oracle 12c PLSQL SOAP EXTRACTVALUE
- awk - 仅在下一列中更改与另一个模式匹配的模式
- utf-8 - Mulesoft SFTP 使用 BOM 写入 UTF-8 编码的 .csv 文件
- node.js - nodemailer SMTP 服务器连接问题(错误:连接 ETIMEDOUT)但它适用于不在我的另一个系统