顔が検出され、追跡された幸福度に基づいてユーザーに指示する (音声指示) シンプルなアプリを作成しようとしています。プログラムのベースとしてFaceTrackerを使用しています。
顔が検出されたタイミングと、顔検出パイプラインのどこに音声命令を挿入できるかを特定できません。パイプラインで制御がどのように流れるかを意味します。
誰かがこれについて提案してもらえますか?
顔が検出され、追跡された幸福度に基づいてユーザーに指示する (音声指示) シンプルなアプリを作成しようとしています。プログラムのベースとしてFaceTrackerを使用しています。
顔が検出されたタイミングと、顔検出パイプラインのどこに音声命令を挿入できるかを特定できません。パイプラインで制御がどのように流れるかを意味します。
誰かがこれについて提案してもらえますか?
API には Tracker クラスがあり、顔が最初に検出され、更新され、フレームから離れたときのコールバック用に拡張します。たとえば、FaceTracker には次のコードがあります。
private class GraphicFaceTracker extends Tracker<Face> {
...
@Override
public void onNewItem(int faceId, Face item) {
mFaceGraphic.setId(faceId);
}
@Override
public void onUpdate(FaceDetector.Detections<Face> detectionResults, Face face) {
mOverlay.add(mFaceGraphic);
mFaceGraphic.updateFace(face);
}
関連する顔に渡された値に基づいて、 onUpdate メソッドでオーディオ命令のコードを呼び出すことをお勧めします。
このチュートリアルでは、フェイス トラッカー アプリのパイプラインの制御フローについて説明します。
https://developers.google.com/vision/face-tracker-tutorial#creating_the_face_detector_pipeline
あなたの場合、単一のユーザーのみを追跡している場合は、顔トラッカーの例で使用されている MultiProcessor ではなく、 LargestFaceFocusingProcessor を使用することをお勧めします。違いは、LargestFaceFocusingProcessor は、複数の顔ではなく、1 つの顔 (つまり、ユーザー) のみを追跡するように特化されていることです。セットアップは次のようになります。
Tracker<Face> myTracker = new Tracker<Face>() {
@Override
public void onUpdate(FaceDetector.Detections<Face> detectionResults, Face face) {
// issue audio instructions
}
};
detector.setProcessor(
new LargestFaceFocusingProcessor.Builder(detector, myTracker).build());