2013-05-13 46 views
-1

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

这里是我们面临的问题:

  1. 我们成功地构建包含了人脸检测代码中的C++ Windows运行时组件。但是,只要我们将该应用程序与Store应用程序集成在一起,并尝试构建WinRT的类的对象。它引发一个异常。
  2. 但是,如果我们评论我们试图处理图像和级联的线条,整个项目就会正常工作。

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

我给出了我们正在研究的项目的链接。 “https://www.dropbox.com/l/OkEZNMrazzFmV6UOj59KMb

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

+0

长帖子,但重要的信息丢失;( - *什么异常*你会得到什么,当你调用opencv代码? – berak 2013-05-13 09:27:42

回答

1

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

  1. 包括在标记为“内容”
  2. 不要忘了highgui DLL中的C#项目OpenCV的dll文件。 objdetect DLL取决于它。
  3. 确保您引用的所有OpenCV的.lib文件,每OpenCV的DLL
  4. 交换机配置管理器
  5. 部署到ARM的设备上运行ARM(即表面)的配置通常是通过远程调试器
  6. 做一个

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

相关问题