【发布时间】:2015-03-10 22:20:22
【问题描述】:
我尝试在新的 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 将旧的 sprite 保存在内存中,并且不会删除它们。
你们是否知道任何其他方式将 Emgu 的图像转换为 Sprite/Texture(不使用 InterOp)或我可以在 New Unity 的 UI 上显示它的任何其他方式。它必须是 Emgu 的图像,因为我还对从相机收到的图像进行了一些操作。
提前感谢您的回复和帮助。 :D
【问题讨论】:
标签: c# unity3d emgucv unity3d-gui