web-dev-qa-db-ja.com

MSQRD / SnapChatのようなフェイスフィルターの実装

ライブフェイスフィルターをMSQRD/Snapchatライブフィルターとして開発したいが、拡張現実フレームワークを使用して顔を検出する方法を見つけることができませんでしたORコアイメージを使用して顔とプロセスを検出しますそれに応じて。誰かが同じを実装する方法を知っているなら教えてください?

44
Manish Agrawal

Core Imageおよび CIDetector を使用することをお勧めします。 https://developer.Apple.com/library/ios/documentation/GraphicsImaging/Conceptual/CoreImaging/ci_detect_faces/ci_detect_faces.html これはiOS 5から利用可能であり、優れたドキュメントがあります。

顔検出器の例の作成:

CIContext *context = [CIContext contextWithOptions:nil];                    // 1
NSDictionary *opts = @{ CIDetectorAccuracy : CIDetectorAccuracyHigh };      // 2
CIDetector *detector = [CIDetector detectorOfType:CIDetectorTypeFace
                                          context:context
                                          options:opts];                    // 3

opts = @{ CIDetectorImageOrientation :
          [[myImage properties] valueForKey:kCGImagePropertyOrientation] }; // 4
NSArray *features = [detector featuresInImage:myImage options:opts];        // 5

コードの機能は次のとおりです。

1.-コンテキストを作成します。この例では、iOSのコンテキスト。イメージの処理で説明されているコンテキスト作成関数のいずれかを使用できます。)検出器を作成するときに、コンテキストの代わりにnilを指定するオプションもあります。

2.-オプション辞書を作成して、検出器の精度を指定します。低精度または高精度を指定できます。低精度(CIDetectorAccuracyLow)は高速です。この例に示されている高精度は、徹底的ですが低速です。

3.-顔の検出器を作成します。作成できる検出器の唯一のタイプは、人間の顔用です。

4.-顔を見つけるためのオプション辞書を設定します。 Core Imageに画像の向きを知らせて、検出器が直立した顔を見つけられる場所を知ることが重要です。ほとんどの場合、画像自体から画像の向きを読み取り、オプション辞書にその値を提供します。

5.-検出器を使用して、画像内の特徴を見つけます。指定する画像はCIImageオブジェクトでなければなりません。 Core ImageはCIFeatureオブジェクトの配列を返します。各オブジェクトは画像の顔を表します。

ここでは、CoreImageまたはGPUImageまたはOpenCVとしてのその他の技術から始めるのに役立つオープンプロジェクトをいくつか紹介します。

1https://github.com/aaronabentheuer/AAFaceDetection (CIDetector-Swift)

2https://github.com/BradLarson/GPUImage (Objective-C)

3https://github.com/jeroentrappers/FaceDetectionPOC (Objective-C:iOS9の非推奨コードがあります)

4https://github.com/kairosinc/Kairos-SDK-iOS (Objective-C)

5https://github.com/macmade/FaceDetect (OpenCV)

21
Pau Senabre

私は同じ種類のアプリを開発しています。これにはOpenFrameworkのOFxfacetrackerライブラリを使用しました。目、口、顔の境界、鼻の位置、ポイント(頂点)を含むメッシュを提供します。

これを使用できます。

3
girish_pro

Unity + OpenCVを使用して単一性をテストしています。次に、ofxfacetrackerがジェスチャトラッキングを行う方法を試します。フィルターは、単一で利用可能なglesシェーダーを使用して実行できます。また、アセットストアには、必要なリアルタイムレンダリングに役立つ多くのプラグインがあります。

2
LucasRT