“返回0面,因为错误存在btk_facefinder_putdcr”Android面部检测器出错

时间:2012-11-13 11:55:30

标签: android image-processing face-detection

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

使用上面的代码我在某些图像上出现此错误。

  

返回0个面,因为错误存在btk_facefinder_putdcr

有人能帮助我吗?如何摆脱这个?

相同的代码适用于其他一些图像。

4 个答案:

答案 0 :(得分:2)

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);
    }

答案 1 :(得分:1)

this page所述,图像宽度需要均匀。我面临同样的问题,所以如果宽度是奇数,我将图像宽度缩放一个。它开始工作了:))

            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));

答案 2 :(得分:0)

我遇到了同样的问题,当我创建一个新的“drawable”文件夹来保存图像时,“drawable”末尾没有“-hdpi”就可以了。我现在唯一的问题是缩放图像以适应屏幕,但这应该是相对直接的。

希望这有帮助。

答案 3 :(得分:0)

如果您从图库和相机获取图像并出现此错误,请检查位图的宽度 你应用facedetection的地方必须是1。

根据developers.android.com的文档,如果图像宽度不均匀,则会发生此异常。 有关详细信息,请查看this链接。

或者,如果您没有从图库中获取图像并从相机中取出,则将图像放在文件夹名称中。