18

我正在尝试获取 FaceDetector 检测到的人脸的欧拉角。

这是我用来输出到 Logcat 的内容:

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

但它总是返回 0.0 对于所有三个,无论面部处于什么角度。任何想法为什么?

4

3 回答 3

5

是的,API 1 中的FaceDetector永远不会返回姿势角。您可以查看源代码进行验证。

API 14中较新的FaceDetectionListener将返回姿势角度,但目前仅在有限数量的设备上可用。甚至不是所有运行 API 14 的设备都可以使用它。您必须调用getMaxNumDetectedFaces()来查看您的设备是否支持该 API。

您也可以尝试使用 OpenCV。几个选项是http://code.opencv.org/projects/opencv/wiki/OpenCV4Androidhttp://code.google.com/p/javacv/。根据我的经验,除非您真的非常需要姿势角度,否则它们不值得麻烦。

于 2012-06-05T18:39:56.823 回答
0

这里有几个类似的问题。查看此链接的第一个答案:

Android Facedetector 姿势值始终为 0

看看下面有人说他们解决了这个问题:

安卓人脸检测

于 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 回答