少し前、GoogleはGoogle Play Servicesライブラリのバージョン7.8をリリースしました。 主要な革新の中には、2つの大きなコンポーネントで構成される新しいMobile Vision APIがあります。さまざまなバーコードとQRコードをスキャンおよび認識するためのバーコードAPIと、写真内の顔を検索および追跡するための更新されたFaces APIです。 猫の下で、私たちはFaces APIに精通し、その主な機能を検討し、小さなアプリケーションを作成します。
Faces APIには、デバイスのカメラから送られてくる既製の画像やストリームから人間の顔を検出して追跡する機能があります。 彼はこのタスクに非常に忍耐強く対処しています。

複雑な場合でも、アルゴリズムの障害が発生する可能性があります。

第一種のエラー
| 
第二種のエラー
|
ライブラリは、単純な追跡に加えて、空間内の顔の向きを決定し、顔の主要点(鼻、目、口の角)の位置を計算し、簡単な認識を行います:人の目が開いている確率と笑顔の確率を決定します:

しかし、十分な紹介として、練習に移りましょう。 Instagramユーザーは毎分
216千枚の写真をアップロードし
ます 。 空に指を向けることで、それらの40%が自撮りだとします。 これは1440個/秒です! トレンドに参加して、自撮りを自動化するための小さなアプリケーションを作成してみましょう。 酸っぱい鉱山が好きな人は少ないので、笑顔だけを撮影します。 注意深い読者は尋ねますが、自動化とは何ですか? 簡単です。ユーザーがタッチでシャッターボタンを検索することを強制しないように、カメラに人がウィンクした後、自動的に写真を撮ります。
基礎として、Google
のVision APIの公式
例を使用します。 簡単にするために、カメラからフレームをレンダリングする質問は省略されています。 興味のある方
はgithubの
ソースをご覧ください 。
Faces APIをプロジェクトに接続するには、gradleスクリプトで依存関係を指定するだけです:
compile 'com.google.android.gms:play-services-vision:7.8.0'
最初に、検出器のインスタンスを作成します。 Selfiesはほとんどの場合、純粋に個人的な問題であるため、たった1人の顔を追跡します。
FaceDetector detector = new FaceDetector.Builder(context)
検出器の「頭脳」、つまり処理アルゴリズムを作成します。 検出器には、検出された各顔のハンドラーのインスタンスを作成するファクトリーが必要です。
携帯電話のフロントカメラの前でたくさんの微調整を使用して、経験的に決定されました。写真の多少適切な笑顔の値は0.4以上であり、ウィンクは次のように形式化できます。 。 さて、ハンドラーにこのアルゴリズムを実装します。
private class GraphicFaceTracker extends Tracker<Face> { @Override public void onUpdate(FaceDetector.Detections<Face> detectionResults, Face face) { boolean isSmiling = face.getIsSmilingProbability() > 0.4; if (isSmiling) { float leftEye = face.getIsLeftEyeOpenProbability(); float rightEye = face.getIsRightEyeOpenProbability(); if (Math.abs(leftEye - rightEye) >= 0.6) { takeShot();
検出器にファクトリインスタンスを渡します。
GraphicFaceTrackerFactory trackerFactory = new GraphicFaceTrackerFactory(); MultiProcessor<Face> processor = new MultiProcessor.Builder<>(trackerFactory).build(); detector.setProcessor(processor);
あとは、カメラからストリームを作成して開始するだけです。
重要! カメラが不要になったら、正しく停止することを忘れないでください。 そうしないと、カメラはロックされたままになり、電話機が再起動するまで、単一のアプリケーションがカメラにアクセスできなくなります。
CameraSource cameraSource = new CameraSource.Builder(context, detector) .setFacing(CameraSource.CAMERA_FACING_FRONT) .build().start();
だから。 コンパイルします。 始めます。 同僚に試してみます。
すべてが機能します。 バグを修正します。 同僚に試してみます。 すべてが機能します。

一般に、Faces APIは、開発者とユーザーの両方に心地よい印象を与えます。 開発者は開発の単純さと容易さを好み、ユーザーは作業の速度と品質を好みます。 Playストアでの顔認識を使用したアプリケーションの追加をお待ちしています。
便利なリンク:
Googleドキュメントアプリケーションソース