解决百度人脸识别离线SDK导致闪退
场景:直接传入“从身份证中获取的证件照”(102px*126px)以抽取人脸特征大概率会因SDK性能问题导致CPU占用率拉满进而导致程序崩溃闪退
原因:客户原有设备算力较低,无法满足原算法识别身份证证件照所需算力,导致设备闪退的问题
解决方案:从身份证中获取证件照后将图片等比例扩大到600-800px再进行人脸特征抽取
/**
* Description: 等比例调整Bitmap图形尺寸
*
* @Author: NonNullPointer
*/
public static Bitmap resizeBitmap(Bitmap oldBitMap, int newSize) {
/**newSize为原图片的倍数**/
// 获得图片的宽高
int width = oldBitMap.getWidth();
int height = oldBitMap.getHeight();
// 取得想要缩放的matrix参数
Matrix matrix = new Matrix();
matrix.postScale(newSize, newSize);
// 得到新的图片
Bitmap newBitMap = Bitmap.createBitmap(oldBitMap, 0, 0, width, height, matrix, false);
return newBitMap;
}
调用SDK方法如下:
byte[] feature = new byte[512];
float ret = FaceSDKManager.getInstance().personDetect(BitmapUtil.resizeBitmap(idCardPhoto, 6), feature, this);
文章不足之处还请斧正!
本文By:NonNullPointer --2024/03/29