소스 검색

Upload files to 'Attendence'

SadhulaSaiKumar 1 년 전
부모
커밋
b31455f439
4개의 변경된 파일629개의 추가작업 그리고 60개의 파일을 삭제
  1. 15
    13
      Attendence/anwi_attendence.py
  2. 15
    13
      Attendence/attendence.py
  3. 561
    0
      Attendence/mobil_attendence.py
  4. 38
    34
      Attendence/test_attendence.py

+ 15
- 13
Attendence/anwi_attendence.py 파일 보기

@@ -8,7 +8,8 @@ import os
8 8
 app = Flask(__name__)
9 9
 #CORS(app)
10 10
 lst = []
11
-
11
+Gallery="Gallery"
12
+People='People'
12 13
 
13 14
 @app.route('/', methods=['GET'])
14 15
 def resume():
@@ -35,13 +36,13 @@ def createEncodings(image):
35 36
     # Create encodings for all faces in an image
36 37
     known_encodings = face_recognition.face_encodings(image, known_face_locations=face_locations)
37 38
     return known_encodings, face_locations
38
-#@app.route('/register', methods=["POST","GET"])
39
+#@app.route('/registered', methods=["POST","GET"])
39 40
 def registered(url_list):
40 41
     input=url_list
41 42
 
42 43
     from pathlib import Path
43
-    Path("ppeople").mkdir(exist_ok=True)
44
-    Path("ppeople/" + input["FileName"]).mkdir(exist_ok=True)
44
+    Path(People).mkdir(exist_ok=True)
45
+    Path(People+"/" + input["FileName"]).mkdir(exist_ok=True)
45 46
 
46 47
     a = input
47 48
     # print(a)
@@ -66,11 +67,11 @@ def registered(url_list):
66 67
 
67 68
     import base64
68 69
 
69
-    with open("ppeople/" + input["FileName"] + "/" + name, "wb") as fh:
70
+    with open(People+"/" + input["FileName"] + "/" + name, "wb") as fh:
70 71
         fh.write(base64.decodebytes(img_data))
71 72
 
72
-    img = "ppeople/" + y + "/" + name
73
-    saveLocation = "ppeople/" + y + "/" + y + ".pickle"
73
+    img = People+"/" + y + "/" + name
74
+    saveLocation = People+"/" + y + "/" + y + ".pickle"
74 75
 
75 76
     ############ detecting no of faceses #######################
76 77
 
@@ -240,8 +241,9 @@ def submit(url_list):
240 241
     import cv2
241 242
 
242 243
     from pathlib import Path
243
-    Path("GGallery/"+ India_Date).mkdir(exist_ok=True)
244
-    Path("GGallery/"+ India_Date +'/'+ input["FileName"]).mkdir(exist_ok=True)
244
+    Path(Gallery).mkdir(exist_ok=True)
245
+    Path(Gallery+"/"+ India_Date).mkdir(exist_ok=True)
246
+    Path(Gallery+"/"+ India_Date +'/'+ input["FileName"]).mkdir(exist_ok=True)
245 247
 
246 248
     a = input
247 249
     # print(a)
@@ -264,11 +266,11 @@ def submit(url_list):
264 266
     import base64
265 267
     
266 268
 
267
-    with open("GGallery/"+India_Date+'/' + input["FileName"] + "/" + name, "wb") as fh:
269
+    with open(Gallery+"/"+India_Date+'/' + input["FileName"] + "/" + name, "wb") as fh:
268 270
         fh.write(base64.decodebytes(img_data))
269 271
 
270
-    path = "GGallery/" +India_Date+'/'+ y + "/" + name
271
-    pickle_location = "ppeople/" + y + "/" + y + ".pickle"
272
+    path = Gallery+"/" +India_Date+'/'+ y + "/" + name
273
+    pickle_location = People+"/" + y + "/" + y + ".pickle"
272 274
     import pathlib
273 275
     file = pathlib.Path(pickle_location)
274 276
     if file.exists ():
@@ -278,7 +280,7 @@ def submit(url_list):
278 280
         print(name)
279 281
         return "Face not found in profile (please change your profile)"
280 282
 
281
-    check_faces="ppeople/" + y + "/" + y + ".jpg"
283
+    check_faces=People+"/" + y + "/" + y + ".jpg"
282 284
     print(check_faces)
283 285
 
284 286
 

+ 15
- 13
Attendence/attendence.py 파일 보기

@@ -8,7 +8,8 @@ import os
8 8
 app = Flask(__name__)
9 9
 #CORS(app)
10 10
 lst = []
11
-
11
+Gallery="Gallery"
12
+People='People'
12 13
 
13 14
 @app.route('/', methods=['GET'])
14 15
 def resume():
@@ -40,8 +41,8 @@ def registered(url_list):
40 41
     input=url_list
41 42
 
42 43
     from pathlib import Path
43
-    Path("ppeople").mkdir(exist_ok=True)
44
-    Path("ppeople/" + input["FileName"]).mkdir(exist_ok=True)
44
+    Path(People).mkdir(exist_ok=True)
45
+    Path(People+"/" + input["FileName"]).mkdir(exist_ok=True)
45 46
 
46 47
     a = input
47 48
     # print(a)
@@ -66,11 +67,11 @@ def registered(url_list):
66 67
 
67 68
     import base64
68 69
 
69
-    with open("ppeople/" + input["FileName"] + "/" + name, "wb") as fh:
70
+    with open(People+"/" + input["FileName"] + "/" + name, "wb") as fh:
70 71
         fh.write(base64.decodebytes(img_data))
71 72
 
72
-    img = "ppeople/" + y + "/" + name
73
-    saveLocation = "ppeople/" + y + "/" + y + ".pickle"
73
+    img = People+"/" + y + "/" + name
74
+    saveLocation = People+"/" + y + "/" + y + ".pickle"
74 75
 
75 76
     ############ detecting no of faceses #######################
76 77
 
@@ -240,8 +241,9 @@ def submit(url_list):
240 241
     import cv2
241 242
 
242 243
     from pathlib import Path
243
-    Path("GGallery/"+ India_Date).mkdir(exist_ok=True)
244
-    Path("GGallery/"+ India_Date +'/'+ input["FileName"]).mkdir(exist_ok=True)
244
+    Path(Gallery).mkdir(exist_ok=True)
245
+    Path(Gallery+"/"+ India_Date).mkdir(exist_ok=True)
246
+    Path(Gallery+"/"+ India_Date +'/'+ input["FileName"]).mkdir(exist_ok=True)
245 247
 
246 248
     a = input
247 249
     # print(a)
@@ -264,11 +266,11 @@ def submit(url_list):
264 266
     import base64
265 267
     
266 268
 
267
-    with open("GGallery/"+India_Date+'/' + input["FileName"] + "/" + name, "wb") as fh:
269
+    with open(Gallery+"/"+India_Date+'/' + input["FileName"] + "/" + name, "wb") as fh:
268 270
         fh.write(base64.decodebytes(img_data))
269 271
 
270
-    path = "GGallery/" +India_Date+'/'+ y + "/" + name
271
-    pickle_location = "ppeople/" + y + "/" + y + ".pickle"
272
+    path = Gallery+"/" +India_Date+'/'+ y + "/" + name
273
+    pickle_location = People+"/" + y + "/" + y + ".pickle"
272 274
     import pathlib
273 275
     file = pathlib.Path(pickle_location)
274 276
     if file.exists ():
@@ -278,7 +280,7 @@ def submit(url_list):
278 280
         print(name)
279 281
         return "Face not found in profile (please change your profile)"
280 282
 
281
-    check_faces="ppeople/" + y + "/" + y + ".jpg"
283
+    check_faces=People+"/" + y + "/" + y + ".jpg"
282 284
     print(check_faces)
283 285
 
284 286
 
@@ -391,7 +393,7 @@ def submit(url_list):
391 393
         """
392 394
         duplicateName = ""
393 395
         distance = 0.0
394
-        matches = face_recognition.compare_faces(known_encodings, unknown_encoding, tolerance=0.51)
396
+        matches = face_recognition.compare_faces(known_encodings, unknown_encoding, tolerance=0.54)
395 397
         face_distances = face_recognition.face_distance(known_encodings, unknown_encoding)
396 398
 
397 399
         best_match_index = np.argmin(face_distances)

+ 561
- 0
Attendence/mobil_attendence.py 파일 보기

@@ -0,0 +1,561 @@
1
+from flask import Flask, render_template, request, redirect, Response, send_file
2
+import multiprocessing
3
+import face_recognition
4
+#from numba import jit
5
+import numpy as np
6
+import os
7
+#from flask_cors import CORS
8
+app = Flask(__name__)
9
+#CORS(app)
10
+lst = []
11
+Gallery="Gallery"
12
+People='People'
13
+
14
+@app.route('/', methods=['GET'])
15
+def resume():
16
+    #return render_template('index.html')
17
+    return 'Attendence app running'
18
+
19
+def createEncodings(image):
20
+    print("Encoding")
21
+    """
22
+    Create face encodings for a given image and also return face locations in the given image.
23
+    Parameters
24
+    -------
25
+    image : cv2 mat
26
+        Image you want to detect faces from.
27
+    Returns
28
+    -------
29
+    known_encodings : list of np array
30
+        List of face encodings in a given image
31
+    face_locations : list of tuples
32
+        list of tuples for face locations in a given image
33
+    """
34
+    # Find face locations for all faces in an image
35
+    face_locations = face_recognition.face_locations(image)
36
+    # Create encodings for all faces in an image
37
+    known_encodings = face_recognition.face_encodings(image, known_face_locations=face_locations)
38
+    return known_encodings, face_locations
39
+#@app.route('/registered', methods=["POST","GET"])
40
+def registered(url_list):
41
+    input=url_list
42
+
43
+    from pathlib import Path
44
+    Path(People).mkdir(exist_ok=True)
45
+    Path(People+"/" + input["FileName"]).mkdir(exist_ok=True)
46
+
47
+    a = input
48
+    # print(a)
49
+    x = a['FileData']
50
+    # print(x)
51
+    y = a['FileName']
52
+    #z = a['FileType']
53
+    z='jpg'
54
+    # CreatedBy=a['CreatedBy']
55
+
56
+    name = y+ '.'+ z
57
+    print(name)
58
+    # print(y)
59
+    # image = y.split("/")
60
+    # filename=image[-1]
61
+
62
+    # print(x)
63
+    try:
64
+        img_data = x.encode()
65
+    except AttributeError:
66
+        return "Successfully saved encoding........."
67
+
68
+    import base64
69
+
70
+    with open(People+"/" + input["FileName"] + "/" + name, "wb") as fh:
71
+        fh.write(base64.decodebytes(img_data))
72
+
73
+    img = People+"/" + y + "/" + name
74
+    saveLocation = People+"/" + y + "/" + y + ".pickle"
75
+
76
+    ############ detecting no of faceses #######################
77
+
78
+
79
+    # import cv2
80
+    # import numpy as np
81
+    # import dlib
82
+
83
+
84
+    # # Connects to your computer's default camera
85
+    # cap = cv2.imread(img)
86
+
87
+    # # Detect the coordinates
88
+    # detector = dlib.get_frontal_face_detector()
89
+
90
+    # number_of_faces=[]
91
+    # # Capture frames continuously
92
+    # # while True:
93
+
94
+    # # Capture frame-by-frame
95
+    # # ret, frame = cap
96
+    # frame = cap
97
+
98
+    # # RGB to grayscale
99
+    # gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
100
+    # faces = detector(gray)
101
+
102
+    # # Iterator to count faces
103
+    # i = 0
104
+    # for face in faces:
105
+
106
+    #     # Get the coordinates of faces
107
+    #     x, y = face.left(), face.top()
108
+    #     x1, y1 = face.right(), face.bottom()
109
+    #     cv2.rectangle(frame, (x, y), (x1, y1), (0, 255, 0), 2)
110
+    # # Increment iterator for each face in faces
111
+    #     i = i+1
112
+
113
+    # # Display the box and faces
114
+    #     cv2.putText(frame, 'face num'+str(i), (x-10, y-10),
115
+    #                 cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2)
116
+        
117
+    #     # if len(i)>1:
118
+    #     #     print(i)
119
+    #     number_of_faces.append(i)
120
+
121
+
122
+    # if (len(number_of_faces))>1:
123
+    #     print("Group Photo")
124
+    #     return "Group Photo"
125
+    # elif (len(number_of_faces))==1:
126
+    #     print("Single Photo")
127
+    #     pass
128
+
129
+
130
+
131
+
132
+
133
+    def saveEncodings(encs, names, fname='encodings.pickle'):
134
+        """
135
+        Save encodings in a pickle file to be used in future.
136
+
137
+        Parameters
138
+        ----------
139
+        encs : List of np arrays
140
+            List of face encodings.
141
+        names : List of strings
142
+            List of names for each face encoding.
143
+        fname : String, optional
144
+            Name/Location for pickle file. The default is "encodings.pickle".
145
+
146
+        Returns
147
+        -------
148
+        None.
149
+
150
+        """
151
+
152
+        data = []
153
+        d = [{"name": nm, "encoding": enc} for (nm, enc) in zip(names, encs)]
154
+        data.extend(d)
155
+
156
+        encodingsFile = fname
157
+
158
+        # dump the facial encodings data to disk
159
+        print("[INFO] serializing encodings...")
160
+        print("[INFO] Encodings Created sucessfully")
161
+        f = open(encodingsFile, "wb")
162
+        f.write(pickle.dumps(data))
163
+        f.close()
164
+
165
+    # Function to create encodings and get face locations
166
+
167
+
168
+    def processKnownPeopleImages(img=img, saveLocation=saveLocation):
169
+        """
170
+        Process images of known people and create face encodings to compare in future.
171
+        Eaach image should have just 1 face in it.
172
+        Parameters
173
+        ----------
174
+        path : STRING, optional
175
+            Path for known people dataset. The default is "C:/inetpub/vhosts/port82/wwwroot/_files/People".
176
+            It should be noted that each image in this dataset should contain only 1 face.
177
+        saveLocation : STRING, optional
178
+            Path for storing encodings for known people dataset. The default is "./known_encodings.pickle in current directory".
179
+        Returns
180
+        -------
181
+        None.
182
+        """
183
+        known_encodings = []
184
+        known_names = []
185
+        # for img in os.listdir(path):
186
+
187
+        imgPath = img
188
+        # Read image
189
+        image = cv2.imread(imgPath)
190
+        name = img.rsplit('.')[0]
191
+        # Resize
192
+        try:
193
+            print(image.shape)
194
+        except AttributeError:
195
+            return "Successfully saved encoding........."
196
+        image = cv2.resize(image, (0, 0), fx=0.9, fy=0.9, interpolation=cv2.INTER_LINEAR)
197
+        # Get locations and encodings
198
+        encs, locs = createEncodings(image)
199
+        try:
200
+            known_encodings.append(encs[0])
201
+        except IndexError:
202
+            os.remove(saveLocation)
203
+            print('------------------------------------- save location --------------------------------')
204
+            print(saveLocation)
205
+            return "hello world!"
206
+        
207
+            
208
+        # known_encodings.append(encs[0])
209
+        known_names.append(name)
210
+        for loc in locs:
211
+            top, right, bottom, left = loc
212
+        # Show Image
213
+        # cv2.rectangle(image, (left, top), (right, bottom), color=(255, 0, 0), thickness=2)
214
+        # cv2.imshow("Image", image)
215
+        # cv2.waitKey(1)
216
+        # cv2.destroyAllWindows()
217
+        saveEncodings(known_encodings, known_names, saveLocation)
218
+
219
+    import cv2
220
+    #import face_recognition
221
+    import pickle
222
+
223
+    processKnownPeopleImages(img, saveLocation)
224
+    return 'Successfully saved encoding.........'
225
+
226
+
227
+# ********************************   COMPARUISION *********************************************************
228
+#@app.route('/submit', methods=["POST","GET"])
229
+def submit(url_list):
230
+
231
+    from datetime import datetime
232
+    import pytz
233
+    tz_NY = pytz.timezone('Asia/Kolkata')
234
+    datetime_NY = datetime.now(tz_NY)
235
+    India_Date = (datetime_NY.strftime("%Y-%m-%d"))
236
+    India_Date = str(India_Date)
237
+    # India_Time = (datetime_NY.strftime("%I:%M:%S %p"))
238
+    # India_Time = str(India_Time)
239
+    input=url_list
240
+    import pickle
241
+    import cv2
242
+
243
+    from pathlib import Path
244
+    Path(Gallery).mkdir(exist_ok=True)
245
+    Path(Gallery+"/"+ India_Date).mkdir(exist_ok=True)
246
+    Path(Gallery+"/"+ India_Date +'/'+ input["FileName"]).mkdir(exist_ok=True)
247
+
248
+    a = input
249
+    # print(a)
250
+    x = a['FileData']
251
+    # print(x)
252
+    y = a['FileName']
253
+   # z = a['FileType']
254
+    z='jpg'
255
+    # CreatedBy=a['CreatedBy']
256
+
257
+    name = y + '.' + z
258
+    # print(name)
259
+    # print(y)
260
+    # image = y.split("/")
261
+    # filename=image[-1]
262
+
263
+    # print(x)
264
+    img_data = x.encode()
265
+
266
+    import base64
267
+    
268
+
269
+    with open(Gallery+"/"+India_Date+'/' + input["FileName"] + "/" + name, "wb") as fh:
270
+        fh.write(base64.decodebytes(img_data))
271
+
272
+    path = Gallery+"/" +India_Date+'/'+ y + "/" + name
273
+    pickle_location = People+"/" + y + "/" + y + ".pickle"
274
+    import pathlib
275
+    file = pathlib.Path(pickle_location)
276
+    if file.exists ():
277
+        pass
278
+    else:
279
+        print ("pickle File not exist")
280
+        print(name)
281
+        return "Face not found in profile (please change your profile)"
282
+
283
+    check_faces=People+"/" + y + "/" + y + ".jpg"
284
+    print(check_faces)
285
+
286
+
287
+    ############ detecting no of faceses #######################
288
+
289
+
290
+    import cv2
291
+    import numpy as np
292
+    import dlib
293
+
294
+
295
+    # Connects to your computer's default camera
296
+    cap = cv2.imread(check_faces)
297
+
298
+    # Detect the coordinates
299
+    detector = dlib.get_frontal_face_detector()
300
+
301
+    number_of_faces=[]
302
+    # Capture frames continuously
303
+    # while True:
304
+
305
+    # Capture frame-by-frame
306
+    # ret, frame = cap
307
+    frame = cap
308
+
309
+    # RGB to grayscale
310
+    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
311
+    faces = detector(gray)
312
+
313
+    # Iterator to count faces
314
+    i = 0
315
+    for face in faces:
316
+
317
+        # Get the coordinates of faces
318
+        x, y = face.left(), face.top()
319
+        x1, y1 = face.right(), face.bottom()
320
+        cv2.rectangle(frame, (x, y), (x1, y1), (0, 255, 0), 2)
321
+    # Increment iterator for each face in faces
322
+        i = i+1
323
+
324
+    # Display the box and faces
325
+        cv2.putText(frame, 'face num'+str(i), (x-10, y-10),
326
+                    cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2)
327
+        
328
+        # if len(i)>1:
329
+        #     print(i)
330
+        number_of_faces.append(i)
331
+
332
+
333
+    if (len(number_of_faces))>1:
334
+        print("Group Photo")
335
+        return "Group Photo"
336
+    elif (len(number_of_faces))==1:
337
+        print("Single Photo")
338
+        pass
339
+
340
+
341
+
342
+
343
+    def readEncodingsPickle(fname):
344
+        """
345
+        Read Pickle file.
346
+
347
+        Parameters
348
+        ----------
349
+        fname : String
350
+            Name of pickle file.(Full location)
351
+
352
+        Returns
353
+        -------
354
+        encodings : list of np arrays
355
+            list of all saved encodings
356
+        names : List of Strings
357
+            List of all saved names
358
+
359
+        """
360
+
361
+
362
+        data = pickle.loads(open(fname, "rb").read())
363
+
364
+
365
+        data = np.array(data)
366
+        encodings = [d["encoding"] for d in data]
367
+        names = [d["name"] for d in data]
368
+        return encodings, names
369
+
370
+
371
+    def compareFaceEncodings(unknown_encoding, known_encodings, known_names):
372
+        """
373
+        Compares face encodings to check if 2 faces are same or not.
374
+
375
+        Parameters
376
+        ----------
377
+        unknown_encoding : np array
378
+            Face encoding of unknown people.
379
+        known_encodings : np array
380
+            Face encodings of known people.
381
+        known_names : list of strings
382
+            Names of known people
383
+
384
+        Returns
385
+        -------
386
+        acceptBool : Bool
387
+            face matched or not
388
+        duplicateName : String
389
+            Name of matched face
390
+        distance : Float
391
+            Distance between 2 faces
392
+
393
+        """
394
+        duplicateName = ""
395
+        distance = 0.0
396
+        matches = face_recognition.compare_faces(known_encodings, unknown_encoding, tolerance=0.54)
397
+        face_distances = face_recognition.face_distance(known_encodings, unknown_encoding)
398
+
399
+        best_match_index = np.argmin(face_distances)
400
+
401
+        distance = face_distances[best_match_index]
402
+        if matches[best_match_index]:
403
+            acceptBool = True
404
+            duplicateName = known_names[best_match_index]
405
+        else:
406
+            acceptBool = False
407
+            duplicateName = ""
408
+        return acceptBool, duplicateName, distance
409
+
410
+        #p = []
411
+
412
+
413
+    def processDatasetImages(path=path, pickle_location=pickle_location):
414
+        """
415
+        Process image in dataset from where you want to separate images.
416
+        It separates the images into directories of known people, groups and any unknown people images.
417
+        Parameters
418
+        ----------
419
+        path : STRING, optional
420
+            Path for known people dataset. The default is "D:/port1004/port1004/wwwroot/_files/People".
421
+            It should be noted that each image in this dataset should contain only 1 face.
422
+        saveLocation : STRING, optional
423
+            Path for storing encodings for known people dataset. The default is "./known_encodings.pickle in current directory".
424
+
425
+        Returns
426
+        -------
427
+        None.
428
+
429
+        """
430
+        # Read pickle file for known people to compare faces from
431
+
432
+        people_encodings, names = readEncodingsPickle(pickle_location)
433
+        # print(p)
434
+        #  imgPath = path + img
435
+
436
+        # Read image
437
+        # path=r"C:\Users\katku\Pictures\final\100011460000611.jpg"
438
+        image = cv2.imread(path)
439
+        #orig = image.copy()
440
+
441
+        # Resize
442
+        image = cv2.resize(image, (0, 0), fx=0.9, fy=0.9, interpolation=cv2.INTER_LINEAR)
443
+
444
+        # Get locations and encodings
445
+        encs, locs = createEncodings(image)
446
+
447
+        # Save image to a group image folder if more than one face is in image
448
+        # if len(locs) > 1:
449
+        #     saveImageToDirectory(orig, "Group", img)
450
+
451
+        # Processing image for each face
452
+        i = 0
453
+        knownFlag = 0
454
+        for loc in locs:
455
+            top, right, bottom, left = loc
456
+            unknown_encoding = encs[i]
457
+            i += 1
458
+            acceptBool, duplicateName, distance = compareFaceEncodings(unknown_encoding, people_encodings, names)
459
+            if acceptBool:
460
+                # saveImageToDirectory(orig, duplicateName,name)
461
+                knownFlag = 1
462
+        if knownFlag == 1:
463
+            print("Match Found")
464
+
465
+
466
+            #print(path)
467
+            with_extension = path.split("/")[-1]
468
+            without_extension = with_extension.split(".")[0]
469
+
470
+            # output_s = {"FileID": without_extension,
471
+            #             "Date": India_Date,
472
+            #             "Time": India_Time}
473
+            # output_json = json.dumps(output_s)
474
+            output_json='Matched successfully'
475
+            print(loc)
476
+            lst.append(output_json)
477
+
478
+            print(output_json)
479
+            # exit()
480
+
481
+        else:
482
+            print('Not Matched')
483
+            pass
484
+            # saveImageToDirectory(orig, "0",name)
485
+
486
+
487
+    import numpy as np
488
+    import json
489
+
490
+    processDatasetImages(path, pickle_location)
491
+    return lst[0]
492
+    #return 'matched successfully'
493
+
494
+
495
+@app.route('/detect', methods=["POST"])
496
+def detect():
497
+    if __name__ == "__main__":
498
+
499
+        url_list=[]
500
+        Dataset=  request.get_json()
501
+        # id = "100013660000125"
502
+        url_list.append(Dataset)
503
+        # multiprocessing
504
+        pool_size = multiprocessing.cpu_count() * 2
505
+        with multiprocessing.Pool(pool_size) as pool:
506
+            try:
507
+                results = pool.map(submit, url_list)
508
+            except FileNotFoundError:
509
+                return 'plese get registered with your PhotoID'
510
+            except IndexError:
511
+                #return 'unable to recognize face'
512
+                return 'failed'
513
+
514
+        pool.close()
515
+
516
+        return results[0]
517
+
518
+
519
+
520
+@app.route('/register', methods=["POST"])
521
+def register():
522
+    print("hello start..........")
523
+    if __name__ == "__main__":
524
+
525
+        url_list=[]
526
+        Dataset=  request.get_json()
527
+        # id = "100013660000125"
528
+        url_list.append(Dataset)
529
+        UserLocation=Dataset["FilePath"]
530
+        print(UserLocation)
531
+
532
+        # if "cO2" in UserLocation or UserLocation is None:
533
+        #     pass
534
+        # else:
535
+        #     return "Please update the URL in the integration"
536
+
537
+
538
+        # multiprocessing
539
+        pool_size = multiprocessing.cpu_count() * 2
540
+        with multiprocessing.Pool(pool_size) as pool:
541
+            try:
542
+                results = pool.map(registered, url_list)
543
+            except IndexError:
544
+                pass
545
+                print('face not found')
546
+            except FileNotFoundError:
547
+                pass
548
+                
549
+            
550
+                #os.remove(img)
551
+               # return 'unable to recognize face'
552
+
553
+        pool.close()
554
+        #return results[0]
555
+        return 'Successfully saved encoding.........'
556
+
557
+
558
+
559
+
560
+if __name__ == "__main__":
561
+    app.run(host='0.0.0.0',port =5007,debug=False)

+ 38
- 34
Attendence/test_attendence.py 파일 보기

@@ -1,18 +1,20 @@
1 1
 from flask import Flask, render_template, request, redirect, Response, send_file
2 2
 import multiprocessing
3 3
 import face_recognition
4
+#from numba import jit
5
+import numpy as np
4 6
 import os
5
-import asyncio
6 7
 #from flask_cors import CORS
7 8
 app = Flask(__name__)
8 9
 #CORS(app)
9 10
 lst = []
10
-
11
+Gallery="Gallery"
12
+People='People'
11 13
 
12 14
 @app.route('/', methods=['GET'])
13 15
 def resume():
14 16
     #return render_template('index.html')
15
-    return 'Attendence test app running'
17
+    return 'Attendence app running'
16 18
 
17 19
 def createEncodings(image):
18 20
     print("Encoding")
@@ -39,8 +41,8 @@ def registered(url_list):
39 41
     input=url_list
40 42
 
41 43
     from pathlib import Path
42
-    Path("ppeople").mkdir(exist_ok=True)
43
-    Path("ppeople/" + input["FileName"]).mkdir(exist_ok=True)
44
+    Path(People).mkdir(exist_ok=True)
45
+    Path(People+"/" + input["FileName"]).mkdir(exist_ok=True)
44 46
 
45 47
     a = input
46 48
     # print(a)
@@ -58,16 +60,18 @@ def registered(url_list):
58 60
     # filename=image[-1]
59 61
 
60 62
     # print(x)
61
-    img_data = x.encode()
63
+    try:
64
+        img_data = x.encode()
65
+    except AttributeError:
66
+        return "Successfully saved encoding........."
62 67
 
63 68
     import base64
64 69
 
65
-    with open("ppeople/" + input["FileName"] + "/" + name, "wb") as fh:
70
+    with open(People+"/" + input["FileName"] + "/" + name, "wb") as fh:
66 71
         fh.write(base64.decodebytes(img_data))
67
-        fh.close()
68 72
 
69
-    img = "ppeople/" + y + "/" + name
70
-    saveLocation = "ppeople/" + y + "/" + y + ".pickle"
73
+    img = People+"/" + y + "/" + name
74
+    saveLocation = People+"/" + y + "/" + y + ".pickle"
71 75
 
72 76
     ############ detecting no of faceses #######################
73 77
 
@@ -230,15 +234,16 @@ def submit(url_list):
230 234
     datetime_NY = datetime.now(tz_NY)
231 235
     India_Date = (datetime_NY.strftime("%Y-%m-%d"))
232 236
     India_Date = str(India_Date)
233
-    India_Time = (datetime_NY.strftime("%I:%M:%S %p"))
234
-    India_Time = str(India_Time)
237
+    # India_Time = (datetime_NY.strftime("%I:%M:%S %p"))
238
+    # India_Time = str(India_Time)
235 239
     input=url_list
236 240
     import pickle
237 241
     import cv2
238 242
 
239 243
     from pathlib import Path
240
-    Path("GGallery").mkdir(exist_ok=True)
241
-    Path("GGallery/" + input["FileName"]).mkdir(exist_ok=True)
244
+    Path(Gallery).mkdir(exist_ok=True)
245
+    Path(Gallery+"/"+ India_Date).mkdir(exist_ok=True)
246
+    Path(Gallery+"/"+ India_Date +'/'+ input["FileName"]).mkdir(exist_ok=True)
242 247
 
243 248
     a = input
244 249
     # print(a)
@@ -261,12 +266,11 @@ def submit(url_list):
261 266
     import base64
262 267
     
263 268
 
264
-    with open("GGallery/" + input["FileName"] + "/" + name, "wb") as fh:
269
+    with open(Gallery+"/"+India_Date+'/' + input["FileName"] + "/" + name, "wb") as fh:
265 270
         fh.write(base64.decodebytes(img_data))
266
-        fh.close()
267 271
 
268
-    path = "GGallery/" + y + "/" + name
269
-    pickle_location = "ppeople/" + y + "/" + y + ".pickle"
272
+    path = Gallery+"/" +India_Date+'/'+ y + "/" + name
273
+    pickle_location = People+"/" + y + "/" + y + ".pickle"
270 274
     import pathlib
271 275
     file = pathlib.Path(pickle_location)
272 276
     if file.exists ():
@@ -276,7 +280,7 @@ def submit(url_list):
276 280
         print(name)
277 281
         return "Face not found in profile (please change your profile)"
278 282
 
279
-    check_faces="ppeople/" + y + "/" + y + ".jpg"
283
+    check_faces=People+"/" + y + "/" + y + ".jpg"
280 284
     print(check_faces)
281 285
 
282 286
 
@@ -389,8 +393,7 @@ def submit(url_list):
389 393
         """
390 394
         duplicateName = ""
391 395
         distance = 0.0
392
-        matches = face_recognition.compare_faces(known_encodings, unknown_encoding, tolerance=0.5)
393
-
396
+        matches = face_recognition.compare_faces(known_encodings, unknown_encoding, tolerance=0.54)
394 397
         face_distances = face_recognition.face_distance(known_encodings, unknown_encoding)
395 398
 
396 399
         best_match_index = np.argmin(face_distances)
@@ -495,11 +498,11 @@ def detect():
495 498
 
496 499
         url_list=[]
497 500
         Dataset=  request.get_json()
498
-
499 501
         # id = "100013660000125"
500 502
         url_list.append(Dataset)
501 503
         # multiprocessing
502
-        with multiprocessing.Pool(processes=2) as pool:
504
+        pool_size = multiprocessing.cpu_count() * 2
505
+        with multiprocessing.Pool(pool_size) as pool:
503 506
             try:
504 507
                 results = pool.map(submit, url_list)
505 508
             except FileNotFoundError:
@@ -514,7 +517,6 @@ def detect():
514 517
 
515 518
 
516 519
 
517
-
518 520
 @app.route('/test_register', methods=["POST"])
519 521
 def register():
520 522
     print("hello start..........")
@@ -522,18 +524,20 @@ def register():
522 524
 
523 525
         url_list=[]
524 526
         Dataset=  request.get_json()
525
-        # referrer = request.headers
526
-        # print(referrer)
527 527
         # id = "100013660000125"
528 528
         url_list.append(Dataset)
529
-        UserLocaton=Dataset["FilePath"]
530
-        print(UserLocaton)
531
-        if "c02" in UserLocaton:
532
-            return "Please update url in integration"
533
-        else:
534
-            pass
529
+        UserLocation=Dataset["FilePath"]
530
+        print(UserLocation)
531
+
532
+        # if "cO2" in UserLocation or UserLocation is None:
533
+        #     pass
534
+        # else:
535
+        #     return "Please update the URL in the integration"
536
+
537
+
535 538
         # multiprocessing
536
-        with multiprocessing.Pool(processes=2) as pool:
539
+        pool_size = multiprocessing.cpu_count() * 2
540
+        with multiprocessing.Pool(pool_size) as pool:
537 541
             try:
538 542
                 results = pool.map(registered, url_list)
539 543
             except IndexError:
@@ -554,4 +558,4 @@ def register():
554 558
 
555 559
 
556 560
 if __name__ == "__main__":
557
-    app.run(host='0.0.0.0',port =5004,debug=False)
561
+    app.run(host='0.0.0.0',port =5004,debug=False)

Loading…
취소
저장