7

我正在尝试在 Windows 8 应用程序中做面部跟踪应用程序。而且我知道,为了访问相机流,我必须使用MediaCapture.AddEffectAsync()它必须与 C++ 合并,如本示例所示。

现在我可以访问流并跟踪人脸,但我无法将跟踪人脸坐标传递/返回给 C# 以进行进一步处理。

我尝试过的一种方法是在 C++ 中调用 C# 方法来传回跟踪坐标。但无济于事,因为 Visual Studio 不允许项目之间的循环依赖

另一种方法是不断地从 C++ 中提取数据,但这不是我想要的。

也许还有另一种更直接的方式来访问相机缓冲区,我想知道。

所以我的问题是,如何取回跟踪坐标?或者什么是正确的方法?谢谢!

4

1 回答 1

1

为了克服这个问题,我们只需在 C++ DLL 和 C# 代码之间建立 TCP/IP localhost 连接。也就是说,我们让 C# 成为服务器,而 C++ DLL 成为客户端。每当 C++ DLL 想与 C# 对话时,C++ 只是通过 TCP/IP 套接字将数据传递给 C#。目前,Windows 8 没有对同一进程内的 TCP/IP 通信进行限制。

一个很好的参考是StreamSocket 示例

这不是最好的方法,并且由于数据需要通过 TCP/IP 层,因此性能略有下降。但是,到目前为止,这也许是我们所能拥有的最好的,除非微软打破了这个障碍。

于 2012-10-29T06:54:00.520 回答