xuxiuxi
2017-07-10 d6119c2d7fe2f802dd224d77bf2d95eeeedb4526
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
/*
 * FaceSDK Library Interface
 * Copyright (C) 2015 Luxand, Inc.
 */
 
package com.luxand;
 
public class FSDK
{
    static {
        System.loadLibrary("stlport_shared");
        System.loadLibrary("fsdk");
    }
    
    
    // Error codes
    
    public static final int FSDKE_OK = 0;
    public static final int FSDKE_FAILED = -1;
    public static final int FSDKE_NOT_ACTIVATED = -2;
    public static final int FSDKE_OUT_OF_MEMORY    = -3;
    public static final int FSDKE_INVALID_ARGUMENT = -4;
    public static final int FSDKE_IO_ERROR = -5;
    public static final int FSDKE_IMAGE_TOO_SMALL = -6;
    public static final int FSDKE_FACE_NOT_FOUND = -7;
    public static final int FSDKE_INSUFFICIENT_BUFFER_SIZE = -8;
    public static final int FSDKE_UNSUPPORTED_IMAGE_EXTENSION =    -9;
    public static final int FSDKE_CANNOT_OPEN_FILE = -10;
    public static final int FSDKE_CANNOT_CREATE_FILE = -11;
    public static final int FSDKE_BAD_FILE_FORMAT = -12;
    public static final int FSDKE_FILE_NOT_FOUND = -13;
    public static final int FSDKE_CONNECTION_CLOSED = -14;
    public static final int FSDKE_CONNECTION_FAILED = -15;
    public static final int FSDKE_IP_INIT_FAILED = -16;
    public static final int FSDKE_NEED_SERVER_ACTIVATION = -17;
    public static final int FSDKE_ID_NOT_FOUND = -18;
    public static final int FSDKE_ATTRIBUTE_NOT_DETECTED = -19;
    public static final int FSDKE_INSUFFICIENT_TRACKER_MEMORY_LIMIT = -20;
    public static final int FSDKE_UNKNOWN_ATTRIBUTE = -21;
    public static final int FSDKE_UNSUPPORTED_FILE_VERSION = -22;
    public static final int FSDKE_SYNTAX_ERROR = -23;
    public static final int FSDKE_PARAMETER_NOT_FOUND = -24;
    public static final int FSDKE_INVALID_TEMPLATE = -25;
    public static final int FSDKE_UNSUPPORTED_TEMPLATE_VERSION = -26;
    public static final int FSDKE_CAMERA_INDEX_DOES_NOT_EXIST = -27;
 
    
    
    // Facial feature count
    
    public static final int FSDK_FACIAL_FEATURE_COUNT = 66;
    
    
    // Types
    
    public static class FSDK_VIDEOCOMPRESSIONTYPE {
        public static final int FSDK_MJPEG = 0;
        public int type;
    }
    
    public static class FSDK_IMAGEMODE {
        public static final int FSDK_IMAGE_GRAYSCALE_8BIT = 0;
        public static final int FSDK_IMAGE_COLOR_24BIT = 1;
        public static final int FSDK_IMAGE_COLOR_32BIT = 2;
        public int mode;
    }
    
    public static class HImage {  //to pass himage "by reference"
        protected int himage;
    }
    
    public static class HCamera {  //to pass hcamera "by reference"
        protected int hcamera;
    }
    
    public static class HTracker {
        protected int htracker;
    }
    
    public static class TFacePosition {
        public int xc, yc, w;
        public int padding;
        public double angle;
    }
 
    public static class TFaces {
        public TFacePosition faces[];
        int maxFaces;
        public TFaces(){
            maxFaces = 100;
            faces = null;
        }
        public TFaces(int MaxFaces){
            maxFaces = MaxFaces;
            faces = null;
        }
    }
    
    public static class TPoint {
        public int x, y;
    }
 
    public static class FSDK_Features {
        public TPoint features[] = new TPoint[FSDK_FACIAL_FEATURE_COUNT];
    }
    
    public static class FSDK_FaceTemplate {
        public byte template[] = new byte[13324];
    }
 
    
    // Facial features
 
    public static final int FSDKP_LEFT_EYE = 0;
    public static final int FSDKP_RIGHT_EYE    = 1;
    public static final int FSDKP_LEFT_EYE_INNER_CORNER =    24;
    public static final int FSDKP_LEFT_EYE_OUTER_CORNER =    23;
    public static final int FSDKP_LEFT_EYE_LOWER_LINE1 =    38;
    public static final int FSDKP_LEFT_EYE_LOWER_LINE2 =    27;
    public static final int FSDKP_LEFT_EYE_LOWER_LINE3 =    37;
    public static final int FSDKP_LEFT_EYE_UPPER_LINE1 =    35;
    public static final int FSDKP_LEFT_EYE_UPPER_LINE2 =    28;
    public static final int FSDKP_LEFT_EYE_UPPER_LINE3 =    36;
    public static final int FSDKP_LEFT_EYE_LEFT_IRIS_CORNER =    29;
    public static final int FSDKP_LEFT_EYE_RIGHT_IRIS_CORNER =    30;
    public static final int FSDKP_RIGHT_EYE_INNER_CORNER =    25;
    public static final int FSDKP_RIGHT_EYE_OUTER_CORNER =    26;
    public static final int FSDKP_RIGHT_EYE_LOWER_LINE1 =    41;
    public static final int FSDKP_RIGHT_EYE_LOWER_LINE2 =    31;
    public static final int FSDKP_RIGHT_EYE_LOWER_LINE3 =    42;
    public static final int FSDKP_RIGHT_EYE_UPPER_LINE1 =    40;
    public static final int FSDKP_RIGHT_EYE_UPPER_LINE2 =    32;
    public static final int FSDKP_RIGHT_EYE_UPPER_LINE3 =    39;
    public static final int FSDKP_RIGHT_EYE_LEFT_IRIS_CORNER =    33;
    public static final int FSDKP_RIGHT_EYE_RIGHT_IRIS_CORNER =    34;
    public static final int FSDKP_LEFT_EYEBROW_INNER_CORNER     = 13;
    public static final int FSDKP_LEFT_EYEBROW_MIDDLE =    16;
    public static final int FSDKP_LEFT_EYEBROW_MIDDLE_LEFT =    18;
    public static final int FSDKP_LEFT_EYEBROW_MIDDLE_RIGHT    = 19;
    public static final int FSDKP_LEFT_EYEBROW_OUTER_CORNER    = 12;
    public static final int FSDKP_RIGHT_EYEBROW_INNER_CORNER =    14;
    public static final int FSDKP_RIGHT_EYEBROW_MIDDLE =    17;
    public static final int FSDKP_RIGHT_EYEBROW_MIDDLE_LEFT =    20;
    public static final int FSDKP_RIGHT_EYEBROW_MIDDLE_RIGHT =    21;
    public static final int FSDKP_RIGHT_EYEBROW_OUTER_CORNER =    15;
    public static final int FSDKP_NOSE_TIP =    2;
    public static final int FSDKP_NOSE_BOTTOM =    49;
    public static final int FSDKP_NOSE_BRIDGE =    22;
    public static final int FSDKP_NOSE_LEFT_WING =    43;
    public static final int FSDKP_NOSE_LEFT_WING_OUTER =    45;
    public static final int FSDKP_NOSE_LEFT_WING_LOWER =    47;
    public static final int FSDKP_NOSE_RIGHT_WING =    44;
    public static final int FSDKP_NOSE_RIGHT_WING_OUTER =    46;
    public static final int FSDKP_NOSE_RIGHT_WING_LOWER =    48;
    public static final int FSDKP_MOUTH_RIGHT_CORNER =    3;
    public static final int FSDKP_MOUTH_LEFT_CORNER    = 4;
    public static final int FSDKP_MOUTH_TOP    = 54;
    public static final int FSDKP_MOUTH_TOP_INNER    = 61;
    public static final int FSDKP_MOUTH_BOTTOM =    55;
    public static final int FSDKP_MOUTH_BOTTOM_INNER =    64;
    public static final int FSDKP_MOUTH_LEFT_TOP =    56;
    public static final int FSDKP_MOUTH_LEFT_TOP_INNER =    60;
    public static final int FSDKP_MOUTH_RIGHT_TOP =    57;
    public static final int FSDKP_MOUTH_RIGHT_TOP_INNER =    62;
    public static final int FSDKP_MOUTH_LEFT_BOTTOM =    58;
    public static final int FSDKP_MOUTH_LEFT_BOTTOM_INNER =    63;
    public static final int FSDKP_MOUTH_RIGHT_BOTTOM =    59;
    public static final int FSDKP_MOUTH_RIGHT_BOTTOM_INNER =    65;
    public static final int FSDKP_NASOLABIAL_FOLD_LEFT_UPPER =    50;
    public static final int FSDKP_NASOLABIAL_FOLD_LEFT_LOWER =    52;
    public static final int FSDKP_NASOLABIAL_FOLD_RIGHT_UPPER =    51;
    public static final int FSDKP_NASOLABIAL_FOLD_RIGHT_LOWER =    53;
    public static final int FSDKP_CHIN_BOTTOM =    11;
    public static final int FSDKP_CHIN_LEFT =    9;
    public static final int FSDKP_CHIN_RIGHT =    10;
    public static final int FSDKP_FACE_CONTOUR1 =    7;
    public static final int FSDKP_FACE_CONTOUR2 =    5;
    public static final int FSDKP_FACE_CONTOUR12 =    6;
    public static final int FSDKP_FACE_CONTOUR13 =    8;    
 
 
    
    public static native int ActivateLibrary(String LicenseKey);
    //public static native int GetHardware_ID(String HardwareID[]); //not implemented
    public static native int GetLicenseInfo(String LicenseInfo[]);
    public static native int SetNumThreads(int Num);
    public static native int GetNumThreads(int Num[]);   
    public static native int Initialize();
    public static native int Finalize();
    
    public static native int CreateEmptyImage(HImage Image);
    public static native int FreeImage(HImage Image);
    
    public static native int LoadImageFromFile(HImage Image, String FileName);
    public static native int LoadImageFromFileWithAlpha(HImage Image, String FileName);
    public static native int SaveImageToFile(HImage Image, String FileName);
    public static native int SetJpegCompressionQuality(int Quality);
    public static native int GetImageWidth(HImage Image, int Width[]);
    public static native int GetImageHeight(HImage Image, int Height[]);
    public static native int LoadImageFromBuffer(HImage Image, byte Buffer[], int Width, int Height, int ScanLine, FSDK_IMAGEMODE ImageMode);
    public static native int GetImageBufferSize(HImage Image, int BufSize [], FSDK_IMAGEMODE ImageMode);
    public static native int SaveImageToBuffer(HImage Image, byte Buffer[], FSDK_IMAGEMODE ImageMode);
    public static native int LoadImageFromJpegBuffer(HImage Image, byte Buffer[], int BufferLength);
    public static native int LoadImageFromPngBuffer(HImage Image, byte Buffer[], int BufferLength);
    public static native int LoadImageFromPngBufferWithAlpha(HImage Image, byte Buffer[], int BufferLength);
       
    public static native int DetectFace(HImage Image, TFacePosition FacePosition);
    public static native int DetectMultipleFaces(HImage Image, TFaces FacePositions); 
    public static native int SetFaceDetectionParameters(boolean HandleArbitraryRotations, boolean DetermineFaceRotationAngle, int InternalResizeWidth);
    public static native int SetFaceDetectionThreshold(int Threshold);
    public static native int GetDetectedFaceConfidence(int Confidence[]);
    
    public static native int DetectFacialFeatures(HImage Image, FSDK_Features FacialFeatures);
    public static native int DetectFacialFeaturesInRegion(HImage Image, TFacePosition FacePosition, FSDK_Features FacialFeatures);
    public static native int DetectEyes(HImage Image, FSDK_Features Eyes);
    public static native int DetectEyesInRegion(HImage Image, TFacePosition FacePosition, FSDK_Features Eyes);
    
    
    public static native int CopyImage(HImage SourceImage, HImage DestImage);
    public static native int ResizeImage(HImage SourceImage, double ratio, HImage DestImage);
    public static native int RotateImage90(HImage SourceImage, int Multiplier, HImage DestImage);
    public static native int RotateImage(HImage SourceImage, double angle, HImage DestImage);
    public static native int RotateImageCenter(HImage SourceImage, double angle, double xCenter, double yCenter, HImage DestImage);
    public static native int CopyRect(HImage SourceImage, int x1, int y1, int x2, int y2, HImage DestImage);
    public static native int CopyRectReplicateBorder(HImage SourceImage, int x1, int y1, int x2, int y2, HImage DestImage);
    public static native int MirrorImage(HImage Image, boolean UseVerticalMirroringInsteadOfHorizontal);
 
    public static native int ExtractFaceImage(HImage Image, FSDK_Features FacialFeatures, int Width, int Height, HImage ExtractedFaceImage, FSDK_Features ResizedFeatures);
    
    
    public static native int GetFaceTemplate(HImage Image, FSDK_FaceTemplate FaceTemplate);
    public static native int GetFaceTemplateInRegion(HImage Image, TFacePosition FacePosition, FSDK_FaceTemplate FaceTemplate);
    public static native int GetFaceTemplateUsingFeatures(HImage Image, FSDK_Features FacialFeatures, FSDK_FaceTemplate FaceTemplate);
    public static native int GetFaceTemplateUsingEyes(HImage Image, FSDK_Features EyeCoords, FSDK_FaceTemplate FaceTemplate);
    public static native int MatchFaces(FSDK_FaceTemplate FaceTemplate1, FSDK_FaceTemplate FaceTemplate2, float Similarity[]);
    public static native int GetMatchingThresholdAtFAR(float FARValue, float Threshold[]);
    public static native int GetMatchingThresholdAtFRR(float FRRValue, float Threshold[]);
 
    
    public static native int CreateTracker(HTracker Tracker);
    public static native int FreeTracker(HTracker Tracker);
    public static native int ClearTracker(HTracker Tracker);
    public static native int SetTrackerParameter(HTracker Tracker, String ParameterName, String ParameterValue);
    public static native int SetTrackerMultipleParameters(HTracker Tracker, String Parameters, int ErrorPosition[]);
    public static native int GetTrackerParameter(HTracker Tracker, String ParameterName, String ParameterValue[], int MaxSizeInBytes);
    public static native int FeedFrame(HTracker Tracker, long CameraIdx, HImage Image, long FaceCount[], long IDs[]);
    public static native int GetTrackerEyes(HTracker Tracker, long CameraIdx, long ID, FSDK_Features Eyes);  
    public static native int GetTrackerFacialFeatures(HTracker Tracker, long CameraIdx, long ID, FSDK_Features FacialFeatures); 
    public static native int GetTrackerFacePosition(HTracker Tracker, long CameraIdx, long ID, TFacePosition FacePosition);
    public static native int LockID(HTracker Tracker, long ID);
    public static native int UnlockID(HTracker Tracker, long ID);
    public static native int SetName(HTracker Tracker, long ID, String Name);
    public static native int GetName(HTracker Tracker, long ID, String Name[], long MaxSizeInBytes);
    public static native int GetAllNames(HTracker Tracker, long ID, String Names[], long MaxSizeInBytes);
    public static native int GetIDReassignment(HTracker Tracker, long ID, long ReassignedID[]);
    public static native int GetSimilarIDCount(HTracker Tracker, long ID, long Count[]);
    public static native int GetSimilarIDList(HTracker Tracker, long ID, long SimilarIDList[]);
    
    public static native int SaveTrackerMemoryToFile(HTracker Tracker, String FileName);
    public static native int LoadTrackerMemoryFromFile(HTracker Tracker, String FileName);
    public static native int GetTrackerMemoryBufferSize(HTracker Tracker, long [] BufSize);
    public static native int SaveTrackerMemoryToBuffer(HTracker Tracker, byte Buffer[]);
    public static native int LoadTrackerMemoryFromBuffer(HTracker Tracker, byte Buffer[]);
 
    public static native int GetTrackerFacialAttribute(HTracker Tracker, long CameraIdx, long ID, String AttributeName, String AttributeValues[], long MaxSizeInBytes);
    public static native int DetectFacialAttributeUsingFeatures(HImage Image, FSDK_Features FacialFeatures, String AttributeName, String AttributeValues[], long MaxSizeInBytes);
    public static native int GetValueConfidence(String AttributeValues, String Value, float Confidence[]);
 
    
    public static native int SetHTTPProxy(String ServerNameOrIPAddress, short Port, String UserName, String Password);
    public static native int OpenIPVideoCamera(FSDK_VIDEOCOMPRESSIONTYPE CompressionType, String URL, String Username, String Password, int TimeoutSeconds, HCamera CameraHandle);
    public static native int CloseVideoCamera(HCamera CameraHandle);
    public static native int GrabFrame(HCamera CameraHandle, HImage Image);
    public static native int InitializeCapturing();
    public static native int FinalizeCapturing();
    
    
}