我正在尝试在Windows 8应用中进行面部跟踪应用。我知道为了访问摄像机流,我必须使用MediaCapture.AddEffectAsync()
,这必须与C ++结合,如图所示in this sample。
现在我可以访问流并跟踪面部,但是我无法将跟踪面坐标传递/返回到C#以进行进一步处理。
我尝试过的一种方法是在C ++中调用C#方法来传回跟踪坐标。但无济于事,因为Visual Studio不允许项目之间的循环依赖。
另一种方法是不断从C ++中提取数据,但这不是我想要的。
也许还有另一种更直接的方式来访问相机缓冲区,我想知道。
所以我的问题是,如何找回跟踪坐标?或者做正确的方法是什么?谢谢!
答案 0 :(得分:1)
为了解决这个问题,我们只需在C ++ DLL和C#代码之间设置TCP / IP localhost连接。也就是说,我们让C#成为服务器,而C ++ DLL成为客户端。每当C ++ DLL想要与C#通信时,C ++只是通过TCP / IP套接字将数据传递给C#。目前,Windows 8不会对同一进程中的TCP / IP通信施加限制。
良好的起始参考是StreamSocket sample
这不是最好的方法,因为数据需要通过TCP / IP层,所以它具有轻微的性能。但是,到目前为止,这可能是我们所能做到的最好的,除非 Microsoft 打破障碍。