3
fd = new FaceDetector(mFaceWidth, mFaceHeight, MAX_FACES);
count = fd.findFaces(mFaceBitmap, faces);

上記のコードを使用すると、一部の画像でこのエラーが発生します。

エラーが存在するため、0面を返しますbtk_facefinder_putdcr

誰かが私を助けることができますか?これを取り除く方法は?

同じコードが他のいくつかの画像でも正常に機能します。

4

4 に答える 4

3

http://blog.csdn.net/devilkin64/article/details/8509767 _

Bitmap srcImg = BitmapFactory.decodeFile(imgUrl);
    Bitmap srcFace = srcImg.copy(Bitmap.Config.RGB_565, true);
    srcImg = null;
    int w = srcFace.getWidth();
    int h = srcFace.getHeight();
    if (w % 2 == 1) {
        w++;
        srcFace = Bitmap.createScaledBitmap(srcFace,
                srcFace.getWidth()+1, srcFace.getHeight(), false);
    }
    if (h % 2 == 1) {
        h++;
        srcFace = Bitmap.createScaledBitmap(srcFace,
                srcFace.getWidth(), srcFace.getHeight()+1, false);
    }
于 2016-08-25T03:09:37.463 に答える
2

このページで述べたように、画像の幅は均一である必要があります。同じ問題に直面したので、幅が奇数の場合は画像の幅を1つ拡大しました。そしてそれは働き始めました:)

            BitmapFactory.Options bitmap_options = new BitmapFactory.Options();
            bitmap_options.inPreferredConfig = Bitmap.Config.RGB_565;

            background_image = BitmapFactory.decodeFile(image_fn, bitmap_options);
            if((1==(background_image.getWidth()%2))){
                background_image = Bitmap.createScaledBitmap(background_image, 
                    background_image.getWidth()+1, background_image.getHeight(), false);
            }
            FaceDetector face_detector = new FaceDetector(
                                    background_image.getWidth(), background_image.getHeight(),
                                    MAX_FACES);
            faces = new FaceDetector.Face[MAX_FACES];
            face_count = face_detector.findFaces(background_image, faces);
            Log.d("Face_Detection", "Face Count: " + String.valueOf(face_count));
于 2014-10-07T06:15:25.337 に答える
0

同じ問題が発生し、画像を保持するために新しい「drawable」フォルダを作成したときに、「drawable」の最後に「-hdpi」がないと機能しました。私が今抱えている唯一の問題は、画面に合うように画像を拡大縮小することですが、これは比較的簡単なはずです。

お役に立てれば。

于 2013-10-29T02:12:50.757 に答える
0

ギャラリーとカメラから画像を取得していて、このエラーが発生した場合は、顔検出を適用するビットマップの幅を確認してください。幅は1である必要があります。

developers.android.com画像の幅が均等でない場合のドキュメントによると、この例外が発生します。詳細については、このリンクを確認してください。

または、ギャラリーから画像を取得しておらず、カメラから取得していない場合は、画像をドローアブルフォルダ名に配置します。

于 2014-09-13T13:13:46.463 に答える