我尝试在新的 Unity3D UI 系统上渲染来自 Emgu 相机捕获的图像。到目前为止,我使用了这个存储库中的 ImageToTexture2d: https ://github.com/neutmute/emgucv/blob/3ceb85cba71cf957d5e31ae0a70da4bbf746d0e8/Emgu.CV/PInvoke/Unity/TextureConvert.cs 然后使用 Sprite.Create() 最终实现了想要的结果。
但!似乎存在大量内存泄漏,因为在我的游戏运行 Unity 编辑器 2-3 分钟后突然占用了大约 3GB 的 RAM,而它开始时大约为 200MB。
我有两个嫌疑人:
- (更可能)我使用的方法不会清理内存。它使用 InterOp 并创建了一些不安全的指针——它闻到了泄漏的味道。
- 每帧运行的 Sprite.Create 将旧精灵保存在内存中,并且不会删除它们。
你们有谁知道将 Emgu 的图像转换为 Sprite/Texture 的任何其他方式(不使用 InterOp)或我可以在 New Unity 的 UI 上显示它的任何其他方式。它必须是 Emgu 的图像,因为我还对从相机收到的图像进行了一些操作。
提前感谢您的回复和帮助。:D