我正在尝试在 Windows 8 应用程序中进行面部跟踪应用程序。而且我知道为了访问相机流,我必须使用 MediaCapture.AddEffectAsync()
必须与 C++ 合并,如图所示 in this sample .
现在我可以访问流并跟踪人脸,但我无法将跟踪人脸坐标传递/返回给 C# 以进行进一步处理。
我尝试过的一种方法是在 C++ 中调用 C# 方法来传回跟踪坐标。但无济于事,因为 Visual Studio 不允许 循环依赖 项目之间。
另一种方法是不断从C++中拉取数据,但这不是我想要的。
也许还有另一种更直接的方式来访问相机缓冲区,我想知道。
所以我的问题是,如何取回跟踪坐标?或者正确的做法是什么?谢谢!
最佳答案
为了克服这个问题,我们只需在 C++ DLL 和 C# 代码之间设置 TCP/IP 本地主机连接。也就是说,我们让 C# 成为服务器,而 C++ DLL 成为客户端。每当 C++ DLL 想要与 C# 对话时,C++ 只是通过 TCP/IP 套接字将数据传递给 C#。目前,Windows 8 没有对同一进程内的 TCP/IP 通信设置限制。
一个好的起始引用是 StreamSocket sample
这不是最好的方法,并且由于数据需要通过 TCP/IP 层,因此它具有轻微的性能影响。但是,到目前为止,也许这是我们所能拥有的最好的,除非 微软 打破障碍。
关于windows-8 - 如何从 Windows 8 中的 MediaCapture API 获取反馈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12907538/