a
554325746@qq.com
2020-01-02 e52632329ef8342a2f692bf58184fc54db3d2b4c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package com.basic.security.utils;
 
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.ImageFormat;
import android.graphics.Rect;
import android.graphics.YuvImage;
 
import java.io.ByteArrayOutputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
 
public class DetectedResult implements Serializable {
 
    public byte[] originalCameraData = null;
    public boolean originalCameraDataChanged;
 
    public List<FacePosition> facePositions = new ArrayList<>();
    public byte[] frameJpgData;
    public byte[] bgrData;
    public int width;
    public int height;
    public String resultText;
    public int featureCount = 0;
    public boolean isRgb;
    public boolean shouldExtractFeature;
    public Bitmap frameBitmap;
 
    public boolean stranger = false;
 
    public byte[] nv21Array;
    ByteArrayOutputStream jpgBaos = new ByteArrayOutputStream();
    static RenderScriptHelper renderScriptHelper = new RenderScriptHelper();
    static Object renderScriptHelperLock = new Object();
 
    public Bitmap getFrameBitmap() {
        if (frameBitmap == null) {
            if (nv21Array != null) {
                synchronized (renderScriptHelperLock) {
                    frameBitmap = renderScriptHelper.getBitmapFromFrameData(nv21Array, width, height);
                }
//                YuvImage im = new YuvImage(nv21Array, ImageFormat.NV21, width,
//                        height, null);
//                Rect r = new Rect(0, 0, width, height);
//                jpgBaos.reset();
//                im.compressToJpeg(r, 100, jpgBaos);
//                byte[] jpgByteArray = jpgBaos.toByteArray();
//                frameBitmap = BitmapFactory.decodeByteArray(jpgByteArray, 0, jpgBaos.size());
//                System.out.println("DetectedResult.getFrameBitmap");
            }
        }
        return frameBitmap;
    }
 
    public boolean stranger() {
        return stranger;
    }
 
    public void setStranger() {
        try {
            boolean hasKnownPerson = false;
            boolean hasStranger = false;
            for (FacePosition facePosition : facePositions) {
                if (facePosition.compareFeatureResult != null) {
                    if (facePosition.compareFeatureResult.person != null) {
                        hasKnownPerson = true;
                    }
                    if (facePosition.score >= 80 && facePosition.compareFeatureResult.person == null) {
                        hasStranger = true;
                    }
                }
            }
            stranger = !hasKnownPerson && hasStranger;
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
}