6

Camera.Face クラスにある Android 4 API 14 の顔認識を使用しようとしています。

顔の座標 [左目/右目、口] の値を取得するのに苦労しています。

使用端末は Samsung Galaxy Tab 2 [GT-P5100] Android 4.0.4

以下のコード スニペットのような顔検出を初期化しています。上記のデバイスで実行すると、camera.getParameters().getMaxNumDetectedFaces()の値が 3 として返されます。

顔がサーフェス フレームに導入され、顔検出リスナーで検出されると、サーフェス上の顔の位置を識別するfaces[0].rect.flattenToString()の値が返されます。ただし、残りの値、つまり顔 ID、左右の目、口はそれぞれ -1 と Null として返されます。

この動作は、ドキュメントで次のように説明されています。

これはオプションのフィールドで、すべてのデバイスでサポートされているわけではありません。サポートされていない場合、値は常に null に設定されます。オプションのフィールドはセットとしてサポートされています。それらはすべて有効であるか、どれも有効ではありません。

問題は、私が何か不足しているのでしょうか、それとも単に私のデバイスが Camera.Face で見つかった Android api の顔認識をサポートできないということですか?

同じデバイスがデバイスへのフェイス ログインを提供していることに言及する価値があります。これは、ユーザー設定によって構成されます。

    FaceDetectionListener faceDetectionListener = new FaceDetectionListener(){

    @Override
    public void onFaceDetection(Face[] faces, Camera camera) {

        if (faces.length == 0){
            prompt.setText(" No Face Detected! ");
        }else{
            prompt.setText(String.valueOf(faces.length) + " Face Detected :) [ "
                    + faces[0].rect.flattenToString()
                    + "Coordinates : Left Eye - " + faces[0].leftEye + "]"
            ) ;
            Log.i("TEST", "face coordinates = Rect :" + faces[0].rect.flattenToString());
            Log.i("TEST", "face coordinates = Left eye : " + String.valueOf(faces[0].leftEye));
            Log.i("TEST", "face coordinates = Right eye - " + String.valueOf(faces[0].rightEye));
            Log.i("TEST", "face coordinates = Mouth - " + String.valueOf(faces[0].mouth));
        }

.....

        if (camera != null){
        try {
            camera.setPreviewDisplay(surfaceHolder);
            camera.startPreview();

            prompt.setText(String.valueOf(
                    "Max Face: " + camera.getParameters().getMaxNumDetectedFaces()));
            camera.startFaceDetection();
            previewing = true;
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
4

1 に答える 1

1

初期化コードでは、カメラの顔検出リスナーを設定する必要があります。

于 2012-09-11T04:01:04.007 に答える