在x64平台上使用C#的OpenCV和Windows应用商店应用

时间:2013-05-13 07:44:03

标签: opencv

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

以下是我们面临的问题:

  1. 我们成功构建了包含面部检测代码的C ++ Windows运行时组件。但只要我们将它与Store App集成并尝试制作WinRT类的对象。它抛出异常。
  2. 但如果我们评论我们试图处理图像和级联的线条,整个项目就可以正常工作。
  3. 我们只能使用上面的代码在Win32控制台应用程序中检测面部。但是无法完成这项任务。

    我正在提供我们正在处理的项目的链接。 “https://www.dropbox.com/l/OkEZNMrazzFmV6UOj59KMb

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

1 个答案:

答案 0 :(得分:1)

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

  1. 在标记为"内容"
  2. 的C#项目中包含OpenCV dll
  3. 别忘了highgui dll。 objdetect dll取决于它。
  4. 确保引用所有OpenCV .lib文件,每个OpenCV dll
  5. 一个
  6. 在Configuration Manager中将配置切换到ARM
  7. 部署到运行ARM的设备(即Surface),通常通过Remote Debugger
  8. 完成

    我还没有成功在x86设备上运行应用程序(即Surface Pro)。我认为问题在于objdetect dll取决于highgui dll。 highgui dll的ARM构建仅依赖于一些标准库。 x86版本依赖于几个不可用于WinRT的其他库。我想你可以通过在没有highgui的情况下为x86构建OpenCV来实现它。您可以通过将BUILD_opencv_highgui CMake变量设置为OFF来执行此操作。