解决百度人脸识别离线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

最后修改:2024 年 03 月 29 日
如果觉得我的文章对你有用,请随意赞赏