Android:FaceDetector 不工作。 findface 始终检测零面;

标签 android bitmap face-detection

我在 Android 中使用 android.media.FaceDetector 进行人脸检测时遇到问题 我尝试使用此代码检测人脸:

BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig =  Bitmap.Config.RGB_565;
Bitmap b = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+"/myimage.jpg", options);
FaceDetector fd = new FaceDetector(b.getWidth(), b.getHeight(), 1);
Face[] face = new Face[1];
int detected_face = fd.findFaces(b, face);

detected_face始终为0;

我尝试使用不同的图像,但收到了相同的结果。 有人可以向我解释我的代码有什么问题吗?

问候

最佳答案

下面的代码适用于我,我记得照片上的脸必须是直立的,这意味着如果在图片中一个人头朝下,那么你必须将位图旋转 180 度才能将它提供给FaceDetector,否则他的脸将不会被检测到)

private void detectFaces() {
    int max = 5;
    BitmapFactory.Options bfo = new BitmapFactory.Options();
    bfo.inPreferredConfig = Bitmap.Config.RGB_565;
    bfo.inScaled = false;
    bfo.inDither = false;
    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.myphoto, bfo);
    int w = bitmap.getWidth();
    int h = bitmap.getHeight();
    FaceDetector fd = new FaceDetector(w, h, max);
    Face[] faces = new Face[max];
    int c = fd.findFaces(bitmap, faces);
    for (int i=0;i<c;i++) {
        Log.d("TAG", Float.toString(faces[i].eyesDistance()));
    }
}

关于Android:FaceDetector 不工作。 findface 始终检测零面;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13402499/

相关文章:

java - 保存SQL数据库条目的创建日期

android - 使用卡片 View 创建 'line connected' recyclerview

java - 在从独立相机捕获的图像上绘制文本(时间戳)

blackberry - 如何使用 scaleImage32() 将我的图像缩小到一半大小?

c - 为什么这个结构体的大小是 16 Byte?

c - 未声明的标识符错误

c# - 人脸检测与比对

java - 尝试从连接检索数据时获取<未知 ssid>

android - 将图像放入 Mapview 标记标注

Android API 人脸检测 vs. OpenCV/JavaCV 人脸检测