fd = new FaceDetector(mFaceWidth, mFaceHeight, MAX_FACES);
count = fd.findFaces(mFaceBitmap, faces);
使用上面的代码我在某些图像上出现此错误。
返回0个面,因为错误存在btk_facefinder_putdcr
有人能帮助我吗?如何摆脱这个?
相同的代码适用于其他一些图像。
答案 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链接。
或者,如果您没有从图库中获取图像并从相机中取出,则将图像放在文件夹名称中。