fd = new FaceDetector(mFaceWidth, mFaceHeight, MAX_FACES);
count = fd.findFaces(mFaceBitmap, faces);
上記のコードを使用すると、一部の画像でこのエラーが発生します。
エラーが存在するため、0面を返しますbtk_facefinder_putdcr
誰かが私を助けることができますか?これを取り除く方法は?
同じコードが他のいくつかの画像でも正常に機能します。
fd = new FaceDetector(mFaceWidth, mFaceHeight, MAX_FACES);
count = fd.findFaces(mFaceBitmap, faces);
上記のコードを使用すると、一部の画像でこのエラーが発生します。
エラーが存在するため、0面を返しますbtk_facefinder_putdcr
誰かが私を助けることができますか?これを取り除く方法は?
同じコードが他のいくつかの画像でも正常に機能します。
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つ拡大しました。そしてそれは働き始めました:)
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));
同じ問題が発生し、画像を保持するために新しい「drawable」フォルダを作成したときに、「drawable」の最後に「-hdpi」がないと機能しました。私が今抱えている唯一の問題は、画面に合うように画像を拡大縮小することですが、これは比較的簡単なはずです。
お役に立てれば。
ギャラリーとカメラから画像を取得していて、このエラーが発生した場合は、顔検出を適用するビットマップの幅を確認してください。幅は1である必要があります。
developers.android.com
画像の幅が均等でない場合のドキュメントによると、この例外が発生します。詳細については、このリンクを確認してください。
または、ギャラリーから画像を取得しておらず、カメラから取得していない場合は、画像をドローアブルフォルダ名に配置します。