Android FaceDetector,人脸欧拉角始终为0

bqjvbblv  于 2023-01-07  发布在  Android
关注(0)|答案(4)|浏览(190)

我试图得到一个由FaceDetector检测到的人脸的欧拉角。
下面是我用来输出到Logcat的代码:

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

但是不管脸的Angular 是什么,它总是对所有三个都返回0.0。知道为什么吗?

ffdz8vbo

ffdz8vbo1#

是的,来自API 1的FaceDetector从来不返回姿势Angular 。你可以查看源代码来验证。
来自API 14的较新FaceDetectionListener将返回姿势Angular ,但目前仅在有限数量的设备上可用。甚至不是所有运行API 14的设备都可以使用它。您必须调用getMaxNumDetectedFaces()来查看您的设备是否支持该API。
你也可以尝试使用OpenCV。有两个选项是http://code.opencv.org/projects/opencv/wiki/OpenCV4Androidhttp://code.google.com/p/javacv/。根据我的经验,除非你真的真的需要姿势Angular ,否则它们不值得你这么麻烦。

vjrehmav

vjrehmav2#

这里有几个类似的问题。请查看以下链接中的第一个答案:
Android Facedetector pose values are always 0
下面有人说他们解决了这个问题:
Android人脸检测

33qvvth1

33qvvth13#

将检测器setMode设置为ACCURATE_MODE
下面是我在Kotlin遇到的一个例子:

val detector = FaceDetector.Builder(context)
            .setClassificationType(FaceDetector.ACCURATE_MODE)
            .setMode(FaceDetector.ACCURATE_MODE)
            .setTrackingEnabled(true)
            .build()
czq61nw1

czq61nw14#

在最新版本中,开发人员需要将性能模式设置为PERFORMANCE_MODE_ACCURATE,而不是PERFORMANCE_MODE_FAST

setPerformanceMode(FaceDetectorOptions.PERFORMANCE_MODE_ACCURATE)

相关问题