0
我正在使用面向Android的FaceDetection API进行脸部和眼部检测。我能够检测和绘制矩形周围的脸部,但是我不明白为什么我所有的眼睛坐标都设置为(0,0)。我看到所有设备都不支持眼睛检测,但它说Point对象设置为null,而不是(0,0),所以我不明白这里发生了什么事情。 。为什么我的FaceDetectionListener无法检测到眼睛坐标
这里是我的FaceDetectionListener:
private List<Rect> faceRects;
private Point leftEye;
private Point rightEye;
@Override
public void onFaceDetection(Camera.Face[] faces, Camera camera) {
if (faces.length > 0) {
faceRects = new ArrayList<Rect>();
for (int i = 0; i < faces.length; i++) {
int left = faces[i].rect.left;
int right = faces[i].rect.right;
int top = faces[i].rect.top;
int bottom = faces[i].rect.bottom;
Rect uRect = new Rect(left, top, right, bottom);
faceRects.add(uRect);
leftEye = faces[i].leftEye; //***THIS IS (0,0) EVEN WHEN FACE IS DETECTED
rightEye = faces[i].rightEye;
}
}
}
为什么我的眼点的坐标越来越设置为(0,0)。我正在Galaxy S7上测试,我发现很难相信它不支持眼睛检测。我很乐意使用OpenCV来解决这个问题,但我宁愿坚持使用Android SDK,因为我已经可以检测到面(如果可能)。感谢您的帮助。
“可能不支持所有设备”非常含糊。是否有任何支持的设备列表? – LaneL
不是我所知道的。 Camera2 API具有https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES的明确列表,但只有当camera2硬件级别为限制或更高时才会映射到Camera1;即使旧相机API具有填充的可选字段,LEGACY级别也不会列出FACE_DETECT_MODE_FULL。 –