18

FaceDetector によって検出された顔のオイラー角を取得しようとしています。

Logcatへの出力に使用するものは次のとおりです。

Log.v("debug", " X: " + face.pose(Face.EULER_X) + " Y: " + face.pose(Face.EULER_Y) + " Z: " + face.pose(Face.EULER_Z) );

ただし、顔の角度に関係なく、3 つすべてに対して常に 0.0 を返します。理由はありますか?

4

3 に答える 3

5

ええ、API 1 のFaceDetectorはポーズ角度を返しません。ソースコードを見て確認できます。

API 14の新しいFaceDetectionListenerはポーズ角度を返しますが、現時点では限られた数のデバイスでのみ使用できます。API 14 を実行しているすべてのデバイスでさえ、それを使用できるわけではありません。デバイスがその API をサポートしているかどうかを確認するには、getMaxNumDetectedFaces()を呼び出す必要があります。

または、OpenCV を使用してみることができます。そのためのいくつかのオプションはhttp://code.opencv.org/projects/opencv/wiki/OpenCV4Androidhttp://code.google.com/p/javacv/です。私の経験では、ポーズ角度が本当に本当に必要でない限り、手間をかける価値はありません。

于 2012-06-05T18:39:56.823 に答える
0

ここにいくつかの同様の質問があります。このリンクから最初の答えをチェックしてください:

AndroidFacedetectorのポーズ値は常に0です

そして、問題を解決したと言っている人については、以下を参照してください。

Androidの顔検出

于 2012-05-30T18:56:52.410 に答える
0

検出器setModeACCURATE_MODE

Kotlinで私のために働いた例を次に示します。

val detector = FaceDetector.Builder(context)
            .setClassificationType(FaceDetector.ACCURATE_MODE)
            .setMode(FaceDetector.ACCURATE_MODE)
            .setTrackingEnabled(true)
            .build()
于 2018-10-23T13:18:44.113 に答える