3

android.media.FaceDetectorを使用したAndroidでの顔検出に問題があります。次のコードを使用して顔を検出しようとしました。

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です。

別の画像を使用しようとしましたが、同じ結果が得られました。誰かが私のコードの何が問題なのか説明してくれますか?

よろしく

4

1 に答える 1

8

以下のコードは私にとってはうまくいきます。私が覚えているように、写真の顔は直立している必要があります。つまり、写真で頭の上に立っている場合は、ビットマップを 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()));
    }
}
于 2013-01-08T08:04:34.807 に答える