-1

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 アプリと統合して、WinRT のクラスのオブジェクトを作成しようとするとすぐに。例外がスローされます。
  2. しかし、画像とカスケードを処理しようとしている行にコメントを付ければ、プロジェクト全体が正常に機能します。

上記のコードを使用して、Win32 コンソール アプリケーションで顔を検出できるのは私たちだけです。しかし、このタスクを実行できません。

私たちが取り組んでいるプロジェクトへのリンクを提供しています。「https://www.dropbox.com/l/OkEZNMrazzFmV​​6UOj59KMb

プロジェクトについて: 1. 「FaceDetectWinRT」は、顔検出用のコードを含む「Class1.cpp」と「Class1.h」を含む C++ Windows ランタイム コンポーネント プロジェクトです。2. 「FaceDetectStoreApp」は、上記のプロジェクトへの参照を持ち、「スタートアップ」プロジェクトとして宣言されている C# Windows ストア アプリ プロジェクトです。3.「MainPage.xaml.cs」クラスの下の「 FaceDetectStoreApp 」にボタンがあり、クリックすると「 FaceDetectWinRT 」プロジェクトの関数「 face 」が呼び出されます。この関数は、検出された顔の座標を返すことが期待されています。

4

1 に答える 1

1

私は非常によく似た結果で同じことをしました。WinRT アプリを ARM デバイスにデプロイするときに成功しました。必要がある:

  1. 「コンテンツ」としてマークされた C# プロジェクトに OpenCV dll を含めます。
  2. highgui dll を忘れないでください。objdetect dll はそれに依存しています。
  3. OpenCV dll ごとに 1 つずつ、すべての OpenCV .lib ファイルを参照していることを確認してください。
  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 に答える