accurascan_kyc 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +20 -0
- package/README.md +635 -0
- package/accurascan-kyc.podspec +38 -0
- package/android/build.gradle +118 -0
- package/android/gradle.properties +5 -0
- package/android/src/main/AndroidManifest.xml +18 -0
- package/android/src/main/java/com/accurascankyc/AccurascanKycModule.java +507 -0
- package/android/src/main/java/com/accurascankyc/AccurascanKycPackage.java +28 -0
- package/android/src/main/java/com/accurascankyc/ActivityFaceMatch.java +533 -0
- package/android/src/main/java/com/accurascankyc/BorderTextView.java +82 -0
- package/android/src/main/java/com/accurascankyc/OcrActivity.java +1263 -0
- package/android/src/main/java/com/accurascankyc/OcrResultActivity.java +736 -0
- package/android/src/main/java/com/accurascankyc/ReactNativeJson.java +123 -0
- package/android/src/main/java/com/accurascankyc/UnsafeOkHttpClient.java +57 -0
- package/android/src/main/res/drawable/btn_bg_gray.xml +6 -0
- package/android/src/main/res/drawable/btn_bg_red.xml +6 -0
- package/android/src/main/res/drawable/btn_bg_trasparent_bottom.xml +6 -0
- package/android/src/main/res/drawable/flip_camera_icon.png +0 -0
- package/android/src/main/res/drawable/ic_close.xml +5 -0
- package/android/src/main/res/drawable/round_border_rect.xml +12 -0
- package/android/src/main/res/drawable/splash.png +0 -0
- package/android/src/main/res/drawable-v24/ic_launcher_foreground.png +0 -0
- package/android/src/main/res/drawable-xhdpi/bg_home.png +0 -0
- package/android/src/main/res/drawable-xhdpi/ic_barcode.png +0 -0
- package/android/src/main/res/drawable-xhdpi/ic_biometric.png +0 -0
- package/android/src/main/res/drawable-xhdpi/ic_check.png +0 -0
- package/android/src/main/res/drawable-xhdpi/ic_liveness.png +0 -0
- package/android/src/main/res/drawable-xhdpi/ic_result.png +0 -0
- package/android/src/main/res/drawable-xhdpi/ic_scan.png +0 -0
- package/android/src/main/res/drawable-xhdpi/img_button_overlay.png +0 -0
- package/android/src/main/res/layout/activity_ocr_result.xml +18 -0
- package/android/src/main/res/layout/activity_splash.xml +26 -0
- package/android/src/main/res/layout/custom_frame_layout.xml +144 -0
- package/android/src/main/res/layout/ocr_activity.xml +28 -0
- package/android/src/main/res/layout-land/custom_frame_layout.xml +144 -0
- package/android/src/main/res/layout-land/ocr_activity.xml +41 -0
- package/android/src/main/res/menu/menu_land_port.xml +7 -0
- package/android/src/main/res/mipmap-hdpi/logo_loign.png +0 -0
- package/android/src/main/res/mipmap-mdpi/logo_loign.png +0 -0
- package/android/src/main/res/mipmap-xhdpi/ic_document_verified.png +0 -0
- package/android/src/main/res/mipmap-xhdpi/logo_loign.png +0 -0
- package/android/src/main/res/mipmap-xxhdpi/logo_loign.png +0 -0
- package/android/src/main/res/values/colors.xml +31 -0
- package/android/src/main/res/values/strings.xml +42 -0
- package/android/src/main/res/values/styles.xml +191 -0
- package/ios/AccurascanKyc-Bridging-Header.h +2 -0
- package/ios/AccurascanKyc.m +34 -0
- package/ios/AccurascanKyc.swift +649 -0
- package/ios/AccurascanKyc.xcodeproj/project.pbxproj +283 -0
- package/ios/AccurascanKyc.xcodeproj/project.xcworkspace/contents.xcworkspacedata +4 -0
- package/ios/FMController.swift +587 -0
- package/ios/LVController.swift +346 -0
- package/ios/MainStoryboard_iPhone.storyboard +338 -0
- package/ios/ViewController.swift +2686 -0
- package/ios/resources/back_icon.png +0 -0
- package/ios/resources/flip_camera_icon.png +0 -0
- package/ios/resources/flip_document_icon.png +0 -0
- package/ios/resources/ic_logo.png +0 -0
- package/lib/commonjs/index.js +13 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/module/index.js +6 -0
- package/lib/module/index.js.map +1 -0
- package/lib/typescript/index.d.ts +3 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/package.json +161 -0
- package/src/index.tsx +5 -0
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
import UIKit
|
|
2
|
+
import AccuraOCR
|
|
3
|
+
//import AccuraLiveness_fm
|
|
4
|
+
|
|
5
|
+
class LVController: UIViewController,LivenessData,FacematchData
|
|
6
|
+
{
|
|
7
|
+
@IBOutlet var mainView: UIView!
|
|
8
|
+
var callBack: RCTResponseSenderBlock? = nil
|
|
9
|
+
var liveness = Liveness()
|
|
10
|
+
var faceImage: UIImage?
|
|
11
|
+
var faceRegion: NSFaceRegion?
|
|
12
|
+
var reactViewController:UIViewController? = nil
|
|
13
|
+
var isLiveness = false
|
|
14
|
+
var livenessConfig:NSDictionary = [:]
|
|
15
|
+
var win: UIWindow? = nil
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
var facematch = Facematch()
|
|
19
|
+
var isfacematch = false
|
|
20
|
+
var faceArgs:NSDictionary = [:]
|
|
21
|
+
|
|
22
|
+
func closeMe() {
|
|
23
|
+
self.win!.rootViewController = reactViewController!
|
|
24
|
+
// self.dismiss(animated: true) {}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
override func viewDidLoad() {
|
|
28
|
+
mainView.isHidden = true
|
|
29
|
+
super.viewDidLoad()
|
|
30
|
+
self.faceRegion = EngineWrapper.detectSourceFaces(self.faceImage)
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
override func viewWillAppear(_ animated: Bool) {
|
|
34
|
+
super.viewWillAppear(animated)
|
|
35
|
+
|
|
36
|
+
if isLiveness{
|
|
37
|
+
liveness.setBackGroundColor(livenessConfig["backGroundColor"] as! String)
|
|
38
|
+
liveness.setCloseIconColor(livenessConfig["closeIconColor"] as! String)
|
|
39
|
+
liveness.setFeedbackBackGroundColor(livenessConfig["feedbackBackGroundColor"] as! String)
|
|
40
|
+
liveness.setFeedbackTextColor(livenessConfig["feedbackTextColor"] as! String)
|
|
41
|
+
if livenessConfig["setLivenessURL"] != nil {
|
|
42
|
+
print("\(livenessConfig["setLivenessURL"])")
|
|
43
|
+
liveness.setLivenessURL(livenessConfig["setLivenessURL"] as! String)
|
|
44
|
+
}
|
|
45
|
+
if livenessConfig["setFeedbackTextSize"] != nil {
|
|
46
|
+
liveness.setFeedbackTextSize((livenessConfig["setFeedbackTextSize"] as? Float)!)
|
|
47
|
+
}else{
|
|
48
|
+
liveness.setFeedbackTextSize(Float(18.0))
|
|
49
|
+
}
|
|
50
|
+
if livenessConfig["setFeedbackTextSize"] != nil {
|
|
51
|
+
liveness.setFeedbackTextSize((livenessConfig["setFeedbackTextSize"] as? Float)!)
|
|
52
|
+
}else{
|
|
53
|
+
liveness.setFeedbackTextSize(Float(18.0))
|
|
54
|
+
}
|
|
55
|
+
if livenessConfig["setFeedBackframeMessage"] != nil {
|
|
56
|
+
liveness.setFeedBackframeMessage(livenessConfig["setFeedBackframeMessage"] as! String)
|
|
57
|
+
}else{
|
|
58
|
+
liveness.setFeedBackframeMessage("Frame Your Face")
|
|
59
|
+
}
|
|
60
|
+
if livenessConfig["setFeedBackAwayMessage"] != nil {
|
|
61
|
+
liveness.setFeedBackAwayMessage(livenessConfig["setFeedBackAwayMessage"] as! String)
|
|
62
|
+
}else{
|
|
63
|
+
liveness.setFeedBackAwayMessage("Move Phone Away")
|
|
64
|
+
}
|
|
65
|
+
if livenessConfig["setFeedBackOpenEyesMessage"] != nil {
|
|
66
|
+
liveness.setFeedBackOpenEyesMessage(livenessConfig["setFeedBackOpenEyesMessage"] as! String)
|
|
67
|
+
}else{
|
|
68
|
+
liveness.setFeedBackOpenEyesMessage("Keep Open Your Eyes")
|
|
69
|
+
}
|
|
70
|
+
if livenessConfig["setFeedBackCloserMessage"] != nil {
|
|
71
|
+
liveness.setFeedBackCloserMessage(livenessConfig["setFeedBackCloserMessage"] as! String)
|
|
72
|
+
}else{
|
|
73
|
+
liveness.setFeedBackCloserMessage("Move Phone Closer")
|
|
74
|
+
}
|
|
75
|
+
if livenessConfig["setFeedBackCenterMessage"] != nil {
|
|
76
|
+
liveness.setFeedBackCenterMessage(livenessConfig["setFeedBackCenterMessage"] as! String)
|
|
77
|
+
}else{
|
|
78
|
+
liveness.setFeedBackCenterMessage("Center Your Face")
|
|
79
|
+
}
|
|
80
|
+
if livenessConfig["setFeedBackFaceSteadymessage"] != nil {
|
|
81
|
+
liveness.setFeedBackFaceSteadymessage(livenessConfig["setFeedBackFaceSteadymessage"] as! String)
|
|
82
|
+
}else{
|
|
83
|
+
liveness.setFeedbackMultipleFaceMessage("Multiple face detected")
|
|
84
|
+
}
|
|
85
|
+
if livenessConfig["setFeedBackFaceSteadymessage"] != nil {
|
|
86
|
+
liveness.setFeedBackFaceSteadymessage(livenessConfig["setFeedBackFaceSteadymessage"] as! String)
|
|
87
|
+
}else{
|
|
88
|
+
liveness.setFeedBackFaceSteadymessage("Keep Your Head Straight")
|
|
89
|
+
}
|
|
90
|
+
if livenessConfig["setFeedBackLowLightMessage"] != nil {
|
|
91
|
+
liveness.setFeedBackLowLightMessage(livenessConfig["setFeedBackLowLightMessage"] as! String)
|
|
92
|
+
}else{
|
|
93
|
+
liveness.setFeedBackLowLightMessage("Low light detected")
|
|
94
|
+
}
|
|
95
|
+
if livenessConfig["setFeedBackBlurFaceMessage"] != nil {
|
|
96
|
+
liveness.setFeedBackBlurFaceMessage(livenessConfig["setFeedBackBlurFaceMessage"] as! String)
|
|
97
|
+
}else{
|
|
98
|
+
liveness.setFeedBackBlurFaceMessage("Blur detected over face")
|
|
99
|
+
}
|
|
100
|
+
if livenessConfig["setFeedBackGlareFaceMessage"] != nil {
|
|
101
|
+
liveness.setFeedBackGlareFaceMessage(livenessConfig["setFeedBackGlareFaceMessage"] as! String)
|
|
102
|
+
}else{
|
|
103
|
+
liveness.setFeedBackGlareFaceMessage("Glare detected")
|
|
104
|
+
}
|
|
105
|
+
if livenessConfig["setBlurPercentage"] != nil {
|
|
106
|
+
liveness.setBlurPercentage(livenessConfig["setBlurPercentage"] as! Int32)
|
|
107
|
+
}else{
|
|
108
|
+
liveness.setBlurPercentage(80) // set blure percentage -1 to remove this filter
|
|
109
|
+
}
|
|
110
|
+
if livenessConfig["setGlarePercentage_0"] != nil && livenessConfig["setGlarePercentage_1"] != nil{
|
|
111
|
+
liveness.setGlarePercentage(livenessConfig["setGlarePercentage_0"] as! Int32,livenessConfig["setGlarePercentage_1"] as! Int32)
|
|
112
|
+
}else{
|
|
113
|
+
liveness.setGlarePercentage(-1, -1) //set glaremin -1 to remove this filter
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
// 0 for clean face and 100 for Blurry face
|
|
119
|
+
|
|
120
|
+
// Set min and max percentage for glare
|
|
121
|
+
liveness.evaluateServerTrustWIthSSLPinning(false)
|
|
122
|
+
|
|
123
|
+
if isLiveness{
|
|
124
|
+
isLiveness = false
|
|
125
|
+
liveness.setLiveness(self)
|
|
126
|
+
|
|
127
|
+
}else{
|
|
128
|
+
closeMe()
|
|
129
|
+
}
|
|
130
|
+
}else if isfacematch{
|
|
131
|
+
facematch.setBackGroundColor(faceArgs["backGroundColor"] as! String)
|
|
132
|
+
facematch.setCloseIconColor(faceArgs["closeIconColor"] as! String)
|
|
133
|
+
facematch.setFeedbackBackGroundColor(faceArgs["feedbackBackGroundColor"] as! String)
|
|
134
|
+
facematch.setFeedbackTextColor(faceArgs["feedbackTextColor"] as! String)
|
|
135
|
+
|
|
136
|
+
if faceArgs["setFeedbackTextSize"] != nil {
|
|
137
|
+
facematch.setFeedbackTextSize((faceArgs["setFeedbackTextSize"] as? Float)!)
|
|
138
|
+
}else{
|
|
139
|
+
facematch.setFeedbackTextSize(Float(18.0))
|
|
140
|
+
}
|
|
141
|
+
if faceArgs["setFeedBackframeMessage"] != nil {
|
|
142
|
+
facematch.setFeedBackframeMessage(faceArgs["setFeedBackframeMessage"] as! String)
|
|
143
|
+
}else{
|
|
144
|
+
facematch.setFeedBackframeMessage("Frame Your Face")
|
|
145
|
+
}
|
|
146
|
+
if faceArgs["setFeedBackAwayMessage"] != nil {
|
|
147
|
+
facematch.setFeedBackAwayMessage(faceArgs["setFeedBackAwayMessage"] as! String)
|
|
148
|
+
}else{
|
|
149
|
+
facematch.setFeedBackAwayMessage("Move Phone Away")
|
|
150
|
+
}
|
|
151
|
+
if faceArgs["setFeedBackOpenEyesMessage"] != nil {
|
|
152
|
+
facematch.setFeedBackOpenEyesMessage(faceArgs["setFeedBackOpenEyesMessage"] as! String)
|
|
153
|
+
}else{
|
|
154
|
+
facematch.setFeedBackOpenEyesMessage("Keep Open Your Eyes")
|
|
155
|
+
|
|
156
|
+
}
|
|
157
|
+
if faceArgs["setFeedBackCloserMessage"] != nil {
|
|
158
|
+
facematch.setFeedBackCloserMessage(faceArgs["setFeedBackCloserMessage"] as! String)
|
|
159
|
+
}else{
|
|
160
|
+
facematch.setFeedBackCloserMessage("Move Phone Closer")
|
|
161
|
+
}
|
|
162
|
+
if faceArgs["setFeedBackCenterMessage"] != nil {
|
|
163
|
+
facematch.setFeedBackCenterMessage(faceArgs["setFeedBackCenterMessage"] as! String)
|
|
164
|
+
}else{
|
|
165
|
+
facematch.setFeedBackCenterMessage("Center Your Face")
|
|
166
|
+
}
|
|
167
|
+
if faceArgs["setFeedbackMultipleFaceMessage"] != nil {
|
|
168
|
+
facematch.setFeedbackMultipleFaceMessage(faceArgs["setFeedbackMultipleFaceMessage"] as! String)
|
|
169
|
+
}else{
|
|
170
|
+
facematch.setFeedbackMultipleFaceMessage("Multiple face detected")
|
|
171
|
+
}
|
|
172
|
+
if faceArgs["setFeedBackFaceSteadymessage"] != nil {
|
|
173
|
+
facematch.setFeedBackFaceSteadymessage(faceArgs["setFeedBackFaceSteadymessage"] as! String)
|
|
174
|
+
}else{
|
|
175
|
+
facematch.setFeedBackFaceSteadymessage("Keep Your Head Straight")
|
|
176
|
+
}
|
|
177
|
+
if faceArgs["setFeedBackLowLightMessage"] != nil {
|
|
178
|
+
facematch.setFeedBackFaceSteadymessage(faceArgs["setFeedBackLowLightMessage"] as! String)
|
|
179
|
+
}else{
|
|
180
|
+
facematch.setFeedBackLowLightMessage("Low light detected")
|
|
181
|
+
}
|
|
182
|
+
if faceArgs["setFeedBackBlurFaceMessage"] != nil {
|
|
183
|
+
facematch.setFeedBackBlurFaceMessage(faceArgs["setFeedBackBlurFaceMessage"] as! String)
|
|
184
|
+
}else{
|
|
185
|
+
facematch.setFeedBackBlurFaceMessage("Blur detected over face")
|
|
186
|
+
}
|
|
187
|
+
if faceArgs["setFeedBackGlareFaceMessage"] != nil {
|
|
188
|
+
facematch.setFeedBackGlareFaceMessage(faceArgs["setFeedBackGlareFaceMessage"] as! String)
|
|
189
|
+
}else{
|
|
190
|
+
facematch.setFeedBackGlareFaceMessage("Glare detected")
|
|
191
|
+
}
|
|
192
|
+
if faceArgs["setBlurPercentage"] != nil {
|
|
193
|
+
facematch.setBlurPercentage(faceArgs["setBlurPercentage"] as! Int32)
|
|
194
|
+
}else{
|
|
195
|
+
facematch.setBlurPercentage(80) // set blure percentage -1 to remove this filter
|
|
196
|
+
}
|
|
197
|
+
if faceArgs["setGlarePercentage_0"] != nil && faceArgs["setGlarePercentage_1"] != nil {
|
|
198
|
+
facematch.setGlarePercentage(faceArgs["setGlarePercentage_0"] as! Int32, faceArgs["setGlarePercentage_1"] as! Int32)
|
|
199
|
+
}else{
|
|
200
|
+
facematch.setGlarePercentage(-1, -1)
|
|
201
|
+
}
|
|
202
|
+
// 0 for clean face and 100 for Blurry face
|
|
203
|
+
|
|
204
|
+
// Set min and max percentage for glare
|
|
205
|
+
|
|
206
|
+
if isfacematch{
|
|
207
|
+
isfacematch = false
|
|
208
|
+
|
|
209
|
+
facematch.setFacematch(self)
|
|
210
|
+
|
|
211
|
+
}else{
|
|
212
|
+
closeMe()
|
|
213
|
+
}
|
|
214
|
+
}else{
|
|
215
|
+
closeMe()
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
func resizeImage(image: UIImage, targetSize: CGRect) -> UIImage {
|
|
220
|
+
let contextImage: UIImage = UIImage(cgImage: image.cgImage!)
|
|
221
|
+
var newX = targetSize.origin.x - (targetSize.size.width * 0.4)
|
|
222
|
+
var newY = targetSize.origin.y - (targetSize.size.height * 0.4)
|
|
223
|
+
var newWidth = targetSize.size.width * 1.8
|
|
224
|
+
var newHeight = targetSize.size.height * 1.8
|
|
225
|
+
if newX < 0 {
|
|
226
|
+
newX = 0
|
|
227
|
+
}
|
|
228
|
+
if newY < 0 {
|
|
229
|
+
newY = 0
|
|
230
|
+
}
|
|
231
|
+
if newX + newWidth > image.size.width{
|
|
232
|
+
newWidth = image.size.width - newX
|
|
233
|
+
}
|
|
234
|
+
if newY + newHeight > image.size.height{
|
|
235
|
+
newHeight = image.size.height - newY
|
|
236
|
+
}
|
|
237
|
+
// This is the rect that we've calculated out and this is what is actually used below
|
|
238
|
+
let rect = CGRect(x: newX, y: newY, width: newWidth, height: newHeight)
|
|
239
|
+
let imageRef: CGImage = contextImage.cgImage!.cropping(to: rect)!
|
|
240
|
+
let image1: UIImage = UIImage(cgImage: imageRef)
|
|
241
|
+
return image1
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
func sendError(msg: String) {
|
|
245
|
+
|
|
246
|
+
self.callBack!([msg as Any, NSNull()])
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
@IBAction func baAtn(_ sender: UIButton) {
|
|
250
|
+
closeMe()
|
|
251
|
+
}
|
|
252
|
+
//}
|
|
253
|
+
//
|
|
254
|
+
//
|
|
255
|
+
//
|
|
256
|
+
//extension LVController: LivenessData,FacematchData {
|
|
257
|
+
|
|
258
|
+
func livenessViewDisappear() {
|
|
259
|
+
closeMe()
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
func livenessData(_ stLivenessValue: String!, livenessImage: UIImage!, status: Bool) {
|
|
263
|
+
isLiveness = false
|
|
264
|
+
var results:[String: Any] = [:]
|
|
265
|
+
|
|
266
|
+
if status == false {
|
|
267
|
+
results["status"] = false
|
|
268
|
+
// callBack!(FlutterError.init(code: "101", message: "Failed to get liveness. Please try again", details: nil))
|
|
269
|
+
// closeMe()
|
|
270
|
+
}else{
|
|
271
|
+
results["status"] = true
|
|
272
|
+
}
|
|
273
|
+
// if let frontUri = EngineWrapper.detectSourceFaces(faceImage){
|
|
274
|
+
// self.faceRegion = frontUri
|
|
275
|
+
// }else{
|
|
276
|
+
// self.faceRegion = nil
|
|
277
|
+
// }
|
|
278
|
+
|
|
279
|
+
if (faceRegion != nil)
|
|
280
|
+
{
|
|
281
|
+
let face2 = EngineWrapper.detectTargetFaces(livenessImage, feature1: faceRegion?.feature)
|
|
282
|
+
// let face11 = faceRegion?.image
|
|
283
|
+
let fm_Score = EngineWrapper.identify(faceRegion?.feature, featurebuff2: face2?.feature)
|
|
284
|
+
if(fm_Score != 0.0){
|
|
285
|
+
let data = face2?.bound
|
|
286
|
+
let image = self.resizeImage(image: livenessImage, targetSize: data!)
|
|
287
|
+
results["detect"] = AccurascanKyc.getImageUri(img: image, name: nil)
|
|
288
|
+
results["fm_score"] = AccurascanKyc.getImageUri(img: faceImage!, name: nil)
|
|
289
|
+
let twoDecimalPlaces = String(format: "%.2f", fm_Score*100) //Face Match score convert to float value
|
|
290
|
+
results["score"] = stLivenessValue.replacingOccurrences(of: " %", with: "")
|
|
291
|
+
results["face_score"] = twoDecimalPlaces
|
|
292
|
+
faceImage = nil
|
|
293
|
+
self.callBack!([NSNull(),AccurascanKyc.convertJSONString(results:results)])
|
|
294
|
+
print(twoDecimalPlaces)
|
|
295
|
+
EngineWrapper.faceEngineClose()
|
|
296
|
+
closeMe()
|
|
297
|
+
}
|
|
298
|
+
}else{
|
|
299
|
+
callBack!(["Failed to get liveness. Please try again", NSNull()])
|
|
300
|
+
EngineWrapper.faceEngineClose()
|
|
301
|
+
closeMe()
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
|
|
306
|
+
|
|
307
|
+
// func didChangedLivenessState(_ livenessState: LivenessType) {
|
|
308
|
+
//
|
|
309
|
+
// }
|
|
310
|
+
|
|
311
|
+
func livenessData(_ stLivenessValue: String!, livenessImage: UIImage!, status: Bool, videoPath: String!, imagePath: String!) {
|
|
312
|
+
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
func facematchViewDisappear() {
|
|
316
|
+
closeMe()
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
func facematchData(_ FaceImage: UIImage!) {
|
|
320
|
+
isfacematch = false
|
|
321
|
+
var results:[String: Any] = [:]
|
|
322
|
+
// self.faceRegion = EngineWrapper.detectSourceFaces(self.faceImage)
|
|
323
|
+
print(faceRegion as Any)
|
|
324
|
+
if (faceRegion != nil)
|
|
325
|
+
{
|
|
326
|
+
let face2 = EngineWrapper.detectTargetFaces(FaceImage, feature1: faceRegion?.feature)
|
|
327
|
+
// let face11 = faceRegion?.image
|
|
328
|
+
let fm_Score = EngineWrapper.identify(faceRegion?.feature, featurebuff2: face2?.feature)
|
|
329
|
+
if(fm_Score != 0.0){
|
|
330
|
+
let data = face2?.bound
|
|
331
|
+
let image = self.resizeImage(image: FaceImage, targetSize: data!)
|
|
332
|
+
results["detect"] = AccurascanKyc.getImageUri(img: image, name: nil)
|
|
333
|
+
let twoDecimalPlaces = String(format: "%.2f", fm_Score*100) //Face Match score convert to float value
|
|
334
|
+
results["score"] = "\(twoDecimalPlaces)"
|
|
335
|
+
self.callBack!([NSNull(),AccurascanKyc.convertJSONString(results:results)])
|
|
336
|
+
EngineWrapper.faceEngineClose()
|
|
337
|
+
print(twoDecimalPlaces)
|
|
338
|
+
closeMe()
|
|
339
|
+
}
|
|
340
|
+
}else{
|
|
341
|
+
callBack!(["Failed to get Facematch. Please try again", NSNull()])
|
|
342
|
+
EngineWrapper.faceEngineClose()
|
|
343
|
+
closeMe()
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
}
|