-1

我们正在尝试将 OpenCV C++ Windows 运行时组件与 C# Windows Store App 集成。我们目前在 Windows 8 (x64) 平台上工作,并使用 Visual Studio 2012 和 OpenCV 2.4.5。实际目标是在 x64 平台上运行的 C# Windows Store App 中检测人脸。我们使用 Visual Studio 2012(x64 平台)成功设置 OpenCV 2.4.5,并将 openCV 的所有 dll 复制到“system32”文件夹,以便我们能够在上述平台上构建和运行 openCV 项目。

以下是我们面临的问题:

  1. 我们成功构建了包含人脸检测代码的 C++ Windows 运行时组件。但只要我们将它与 Store App 集成并尝试制作 WinRT 类的对象。它抛出一个异常。
  2. 但是,如果我们评论我们试图处理图像和级联的行,整个项目就可以正常工作。

只有我们能够使用上面的代码在 Win32 控制台应用程序中检测人脸。但无法完成这项任务。

我正在提供我们正在进行的项目的链接。“ https://www.dropbox.com/l/OkEZNMrazzFmV​​6UOj59KMb

关于项目: 1.“FaceDetectWinRT”是C++ Windows运行时组件项目,其中包含“Class1.cpp”和“Class1.h”,其中包含人脸检测代码。2.“FaceDetectStoreApp”是C# Windows Store App项目,它引用了上述项目,并被声明为“启动”项目。3. 在“MainPage.xaml.cs”类下的“FaceDetectStoreApp”中有一个按钮,单击该按钮会调用“FaceDetectWinRT”项目的函数“face”,该函数在工作时预计会返回检测到的人脸坐标。

4

1 回答 1

1

我做了同样的事情,结果非常相似。在 ARM 设备上部署 WinRT 应用程序时我取得了成功。你需要:

  1. 在标记为“内容”的 C# 项目中包含 OpenCV dll
  2. 不要忘记highgui dll。objdetect dll 依赖于它。
  3. 确保引用所有 OpenCV .lib 文件,每个 OpenCV dll 一个
  4. 在配置管理器中将配置切换到 ARM
  5. 部署到通常通过远程调试器完成的运行 ARM 的设备(即 Surface)

我还没有在 x86 设备(即 Surface Pro)上成功运行该应用程序。我认为问题在于 objdetect dll 依赖于 highgui dll。highgui dll 的 ARM 构建只依赖于几个标准库。x86 版本依赖于 WinRT 不可用的几个附加库。我认为您可以通过在没有 highgui 的情况下为 x86 构建 OpenCV 来使其工作。您可以通过将 BUILD_opencv_highgui CMake 变量设置为 OFF 来做到这一点。

于 2013-06-09T04:21:42.340 回答