我们正在使用HoloLens的可定位相机(在统一中)来执行许多图像识别任务。我们希望利用HoloLens开发者门户中提供的混合现实捕捉功能,这样我们就可以演示我们的应用程序,但是MRC崩溃了,因为我们在照片模式下占据了相机。
有人有好办法解决这个问题吗?我们已经有了一些想法,但没有一个是没有大坏处的。
解决方案:将您的可定位相机置于视频模式,以便您可以与MRC共享摄像机。的缺点:视频模式只允许我们将视频保存到磁盘,但是我们需要实时访问内存中的缓冲区(照片模式给我们的访问方式),这样我们就可以实时地进行检测。
解决方案:在C++插件中捕获视频,并将帧字节传递给统一。这允许MRC按预期工作。缺点:我们失去了“可定位相机”的“可定位”部分,因为我们不再能够访问cameraSpaceToWorldSpace转换矩阵,我们正在UI中使用该矩阵来定位我们在世界空间中被识别的对象。子解决方案:自己重新创建可定位相机视图的转换矩阵。Sub-downside:我对微软如何创建这个转换矩阵没有任何深入的见解。我认为这涉及到一些硬件复杂性,例如考虑镜头失真。如果有人能指导我如何创建这个矩阵,那可能是一个解决方案。
解决方案:在创建MRC时,关闭对象识别,然后在录制完缺点时再打开它:我们的识别系统实时运行,每秒n次。不可能在视频上捕捉到这些识别信息。
发布于 2017-04-13 21:47:25
最后,我们创建了一个插件,用于使用微软的媒体基金会()来访问视频摄像机帧。我们开源的是为了防止其他人遇到这个问题。
这个插件模仿了统一的VideoCapture类,这样开发人员就可以很容易地理解如何实现它。
希望这对一些人有帮助。
https://stackoverflow.com/questions/42376243
复制相似问题