3

这是我编写的用于运行 android 的人脸检测器的代码。不幸的是,它没有找到任何东西。我把它放在了一个 onPreviewFrame(data, camera) 中。

Camera.Parameters parameters = camera.getParameters();
Camera.Size size = parameters.getPreviewSize();
YuvImage image = new YuvImage(data, ImageFormat.NV21, size.width, size.height, null);
Rect rectangle = new Rect(0, 0, size.width, size.height);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
int quality = 100;
image.compressToJpeg(rectangle, quality, stream);
Bitmap bitmap = BitmapFactory.decodeByteArray(stream.toByteArray(), 0, stream.size());
FaceDetector detector = new FaceDetector(size.width, size.height, 5);
FaceDetector.Face[] faces = new FaceDetector.Face[5];
int numFaces = detector.findFaces(bitmap, faces);
textView.setText("numFaces = " + numFaces);

有任何想法吗?修复?

4

1 回答 1

0

我认为您应该首先检查您的位图数据是否正确。你必须setPreviewSize之前startPreview。检查大小是否与您的预览数据相同。或者您可以将其硬编码为 (640, 480) 进行测试。如果你的位图是正确的。由于输入数据质量,API 可能无法工作。您可以转储一些数据,并尝试其他应用程序或库,例如 OpenCV,以进行验证。祝你好运。

于 2013-07-31T01:46:00.060 回答