我试图得到一个由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。知道为什么吗?
ffdz8vbo1#
是的,来自API 1的FaceDetector从来不返回姿势Angular 。你可以查看源代码来验证。来自API 14的较新FaceDetectionListener将返回姿势Angular ,但目前仅在有限数量的设备上可用。甚至不是所有运行API 14的设备都可以使用它。您必须调用getMaxNumDetectedFaces()来查看您的设备是否支持该API。你也可以尝试使用OpenCV。有两个选项是http://code.opencv.org/projects/opencv/wiki/OpenCV4Android和http://code.google.com/p/javacv/。根据我的经验,除非你真的真的需要姿势Angular ,否则它们不值得你这么麻烦。
vjrehmav2#
这里有几个类似的问题。请查看以下链接中的第一个答案:Android Facedetector pose values are always 0下面有人说他们解决了这个问题:Android人脸检测
33qvvth13#
将检测器setMode设置为ACCURATE_MODE下面是我在Kotlin遇到的一个例子:
setMode
ACCURATE_MODE
val detector = FaceDetector.Builder(context) .setClassificationType(FaceDetector.ACCURATE_MODE) .setMode(FaceDetector.ACCURATE_MODE) .setTrackingEnabled(true) .build()
czq61nw14#
在最新版本中,开发人员需要将性能模式设置为PERFORMANCE_MODE_ACCURATE,而不是PERFORMANCE_MODE_FAST
setPerformanceMode(FaceDetectorOptions.PERFORMANCE_MODE_ACCURATE)
4条答案
按热度按时间ffdz8vbo1#
是的,来自API 1的FaceDetector从来不返回姿势Angular 。你可以查看源代码来验证。
来自API 14的较新FaceDetectionListener将返回姿势Angular ,但目前仅在有限数量的设备上可用。甚至不是所有运行API 14的设备都可以使用它。您必须调用getMaxNumDetectedFaces()来查看您的设备是否支持该API。
你也可以尝试使用OpenCV。有两个选项是http://code.opencv.org/projects/opencv/wiki/OpenCV4Android和http://code.google.com/p/javacv/。根据我的经验,除非你真的真的需要姿势Angular ,否则它们不值得你这么麻烦。
vjrehmav2#
这里有几个类似的问题。请查看以下链接中的第一个答案:
Android Facedetector pose values are always 0
下面有人说他们解决了这个问题:
Android人脸检测
33qvvth13#
将检测器
setMode
设置为ACCURATE_MODE
下面是我在Kotlin遇到的一个例子:
czq61nw14#
在最新版本中,开发人员需要将性能模式设置为PERFORMANCE_MODE_ACCURATE,而不是PERFORMANCE_MODE_FAST