我们正在使用HoloLens的可定位相机(在Unity中)执行许多图像识别任务。我们想利用HoloLens开发人员门户网站中提供的混合现实捕获功能(MRC),以便我们可以演示我们的应用程序,但MRC崩溃是因为我们在照片模式下占用相机。
有没有人有一个很好的解决方法呢?我们有一些想法,但没有一个没有大的缺点。
解决方案:将可定位的相机置于视频模式,以便与MRC共享摄像机。 下行:视频模式只允许我们将视频保存到磁盘,但我们需要实时访问内存中的缓冲区(照片模式为我们提供访问权限),以便我们可以实时进行检测。
解决方案:在C ++插件中捕获视频,并将帧字节传递给Unity。这允许MRC按预期工作。 下行:我们失去了'可定位相机'的'可定位'部分,因为我们无法再访问cameraSpaceToWorldSpace转换矩阵,我们正在UI中使用它来在世界空间中找到我们认可的对象。 子解决方案:自己重新创建可定位的摄像机视图的转换矩阵。 子缺点:我对Microsoft如何创建此转换矩阵没有任何了解。我想它涉及一些硬件复杂性,例如考虑镜头扭曲。如果有人可以指导我如何创建这个矩阵,那可能就是一个解决方案。
解决方案:在创建MRC时关闭对象识别,然后在完成录制后将其重新打开 缺点:我们的识别系统实时运行,每秒n次。没有办法捕获视频上的识别。
答案 0 :(得分:1)
我们最终为Unity创建了一个插件,该插件使用Microsoft的Media Foundation来访问摄像机帧。我们open sourced it以防其他人遇到此问题。
该插件模仿Unity的VideoCapture class,以便开发人员能够轻松了解如何实现它。
希望这对少数人有所帮助。